我需要將受影響的檔案限制為 Example*.pdf。這些檔案的名稱中有 1-3 位數字,我需要對它們進行標準化。所以 Example_1.pdf -> Example_001.pdf 而 Example_100.pdf -> Example_100.pdf
第一部分將檔案重命名為 Example.1.pdf,因此我可以使用單個分隔符決議它們,但它在第二步中給了我錯誤(cmdlet rename-item at command pipeline position 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$2.pdf'}
任何幫助表示贊賞。
uj5u.com熱心網友回復:
請注意,塊$_內部的-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"))}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/333062.html
