sync from Linux

This commit is contained in:
js0ny 2025-01-07 22:07:52 +00:00
parent 8bb2d9fbe8
commit 2a0fd9b83f
16 changed files with 317 additions and 617 deletions

View file

@ -0,0 +1,43 @@
<#
.SYNOPSIS
Rename files with a specified extension in a folder, padding the numeric part with zeros.
.PARAMETER ext
The extension of the files to rename, without the dot. Default is "md".
.PARAMETER Numeral
If specified, the files will be renamed in the order of their numeric part.
.EXAMPLE
Rename-FilesWithZeroPadding.ps1 -ext "txt"
Renames all files with the extension "txt" in the current folder, padding the numeric part with zeros.
For example: '1.txt', '2.txt', ... '12.txt' -> '01.txt', '02.txt', ... '12.txt'.
.EXAMPLE
Rename-FilesWithZeroPadding.ps1 -Numeral # This set the Numeral switch to false
Renames all files with the default extension "md" in the current folder, in the order of their filenames.
For example: 'file1.md', 'file2.md', ... 'file12.md' -> '01.md', '02.md', ... '12.md'.
#>
param(
[string]$ext = "md",
[switch]$Numeral
)
if ($Numeral) {
$files = $files | Sort-Object { [int]($_.BaseName -replace '\D', '') }
}
else {
$files = Get-ChildItem -Filter "*.$ext" | Sort-Object Name
$fnamecnt = 1
}
$cnt = $files.Count
$paddingLength = $cnt.ToString().Length
foreach ($file in $files) {
if ($Numeral) {
$number = [int]($file.BaseName -replace '\D', '')
$newNumber = $number.ToString().PadLeft($paddingLength, '0')
$newName = "$newNumber.$ext"
}
else {
$newName = ($fnamecnt++).ToString().PadLeft($paddingLength, '0') + ".$ext"
}
Rename-Item -Path $file.FullName -NewName $newName
}