如何使用 powershell 重命名带有填充零的文件
How can I use powershell to rename files with padded zeros
我需要将受影响的文件限制为 Example*.pdf。这些文件的名称中有 1-3 位数字,我需要将它们标准化。所以 Example_1.pdf -> Example_001.pdf 而 Example_100.pdf -> Example_100.pdf
第一部分将文件重命名为 Example。1.pdf 这样我就可以用一个定界符解析它们,但是它在第二步中给了我错误(cmdlet rename-item 在命令管道位置 1 供应值以下参数:path)
Get-ChildItem of* | rename-item -newname { $_.Name -replace '_','.' }
Get-ChildItem of* |
foreach {
$nameArray = $_.Split('.')
$ExampleNumber = $nameArray[1]
rename-item -path $Path -newname $nameArray[0]+$ExampleNumber+$nameArray[2]
}
但如果我能得到这样的东西,那么我就可以玩弄 $ExampleNumber
然后我尝试使用正则表达式。如果这可行,它会填充个位数文件,然后我可以对两位数文件进行第二次传递。但它没有重命名任何东西。
Get-ChildItem ex* | rename-item -newname { $_ -replace '(.*)(\d{1})\.pdf', 'Example_0.pdf'}
感谢任何帮助。
请注意 -NewName
块中的 $_
类型为 FileInfo
。
这是我的建议:
Get-ChildItem ex* | Rename-Item -NewName {
[void]($_.Name -match "\d+")
$_.Name -replace "\d+", (([int]$Matches[0]).ToString("000"))
}
或者:
Get-ChildItem ex* |
Rename-Item -NewName {
$_.Name -replace "\d+", (([int][regex]::match($_.Name, "\d+").value).ToString("000"))}
我需要将受影响的文件限制为 Example*.pdf。这些文件的名称中有 1-3 位数字,我需要将它们标准化。所以 Example_1.pdf -> Example_001.pdf 而 Example_100.pdf -> Example_100.pdf
第一部分将文件重命名为 Example。1.pdf 这样我就可以用一个定界符解析它们,但是它在第二步中给了我错误(cmdlet rename-item 在命令管道位置 1 供应值以下参数:path)
Get-ChildItem of* | rename-item -newname { $_.Name -replace '_','.' }
Get-ChildItem of* |
foreach {
$nameArray = $_.Split('.')
$ExampleNumber = $nameArray[1]
rename-item -path $Path -newname $nameArray[0]+$ExampleNumber+$nameArray[2]
}
但如果我能得到这样的东西,那么我就可以玩弄 $ExampleNumber
然后我尝试使用正则表达式。如果这可行,它会填充个位数文件,然后我可以对两位数文件进行第二次传递。但它没有重命名任何东西。
Get-ChildItem ex* | rename-item -newname { $_ -replace '(.*)(\d{1})\.pdf', 'Example_0.pdf'}
感谢任何帮助。
请注意 -NewName
块中的 $_
类型为 FileInfo
。
这是我的建议:
Get-ChildItem ex* | Rename-Item -NewName {
[void]($_.Name -match "\d+")
$_.Name -replace "\d+", (([int]$Matches[0]).ToString("000"))
}
或者:
Get-ChildItem ex* |
Rename-Item -NewName {
$_.Name -replace "\d+", (([int][regex]::match($_.Name, "\d+").value).ToString("000"))}