2017-09-16 91 views
-1

我是使用PowerShell的新手,並且想知道如何填充幾個相似文件名中包含的數字字符串,以便在每個文件名中具有相同數量的數字。使用PowerShell將前導零添加到文件名字符串

也就是說,我有一個包含這300個文件的文件夾:

dummy name 1.txt通過dummy name 300.txt

和只是想重命名在他們不到3個數字的所有文件都正好3個數字,例如如:

dummy name 001.txt通過dummy name 300.txt

+2

到目前爲止您嘗試過什麼? – TheMadTechnician

+1

'gci | ren -n {[regex] :: replace($ _。basename,'\ d +',{「$ args」.PadLeft(3,'0')})}' – TessellatingHeckler

+0

我試過這個明顯工作):$ i = 1 Get-ChildItem * .txt | %{Rename-Item $ _ -NewName('{0:D3} .txt'-f $ i ++)} –

回答

-1

試試這個:

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

試試這個:

1..300 | %{ 
    $source = "dummy name $_.txt" 
    $target = ('dummy name {0:00#}.txt' -f $_) 
    rename-item $source -NewName $target 
    } 

注:

  1. 外環有點標新立異。大多數腳本編寫者將其編碼爲類似java for循環。

  2. 單引號和雙引號的選擇是有意的。小心。

  3. 該代碼有點不雅,因爲文件名的某些部分輸入了兩次。

  4. 假設是所有300個文件都存在。如果沒有,你會得到錯誤。

+0

爲什麼downvote?它產生了錯誤的結果嗎?代碼是否應該改進? –

相關問題