如何使用 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"))}