我是使用PowerShell的新手,並且想知道如何填充幾個相似文件名中包含的數字字符串,以便在每個文件名中具有相同數量的數字。使用PowerShell將前導零添加到文件名字符串
也就是說,我有一個包含這300個文件的文件夾:
dummy name 1.txt
通過dummy name 300.txt
和只是想重命名在他們不到3個數字的所有文件都正好3個數字,例如如:
dummy name 001.txt
通過dummy name 300.txt
我是使用PowerShell的新手,並且想知道如何填充幾個相似文件名中包含的數字字符串,以便在每個文件名中具有相同數量的數字。使用PowerShell將前導零添加到文件名字符串
也就是說,我有一個包含這300個文件的文件夾:
dummy name 1.txt
通過dummy name 300.txt
和只是想重命名在他們不到3個數字的所有文件都正好3個數字,例如如:
dummy name 001.txt
通過dummy name 300.txt
試試這個:
Get-ChildItem "c:\temp\" -file -Filter "*.txt" | where basename -match ". \d{1,2}$" | %{
$res=$_.BaseName -split '(.)(\d{1,2})$'
$newnamme="{0}\{1} {2:D3}{3}" -f $_.Directory, $res[0], [int]$res[2], $_.Extension
Rename-Item $_.FullName $newnamme
}
試試這個:
1..300 | %{
$source = "dummy name $_.txt"
$target = ('dummy name {0:00#}.txt' -f $_)
rename-item $source -NewName $target
}
注:
外環有點標新立異。大多數腳本編寫者將其編碼爲類似java for循環。
單引號和雙引號的選擇是有意的。小心。
該代碼有點不雅,因爲文件名的某些部分輸入了兩次。
假設是所有300個文件都存在。如果沒有,你會得到錯誤。
爲什麼downvote?它產生了錯誤的結果嗎?代碼是否應該改進? –
到目前爲止您嘗試過什麼? – TheMadTechnician
'gci | ren -n {[regex] :: replace($ _。basename,'\ d +',{「$ args」.PadLeft(3,'0')})}' – TessellatingHeckler
我試過這個明顯工作):$ i = 1 Get-ChildItem * .txt | %{Rename-Item $ _ -NewName('{0:D3} .txt'-f $ i ++)} –