2012-08-05 212 views
3

使用Powershell,我想通過使用文件所在文件夾的名稱來重命名文件夾中的文件。所以在我的C:\ temp目錄中,有3個文件夾名爲'aaa ','bbb'和'ccc'。在每個這些文件夾中,有3個文件稱爲doc1.txt,doc2.txt和doc3.txt。我想所有9個.txt文件重命名爲文件夾名+文件名,這樣他們將被重新命名爲以下幾點:使用文件夾名稱在powershell中重命名文件

aaadoc1.txt 
aaadoc2.txt 
aaadoc3.txt 
bbbdoc1.txt 
bbbdoc2.txt 
bbbdoc3.txt 
cccdoc1.txt 
cccdoc2.txt 
cccdoc3.txt 

請任何人都可以點我如何處理這個正確的方向?

回答

9

這將重命名這些文件,並把下劃線(「_」)的文件夾名和文件名之間:

Get-ChildItem C:\temp -Filter *.txt -Recurse | Rename-Item -NewName { $_.Directory.Name+'_'+$_.Name} 
+0

謝謝Shay!工作一種享受,它給了我其他我需要學習的東西! – user1577314 2012-08-05 15:43:33

+0

你會如何達到同樣的子目錄? 也就是Dir1_Dir2_filename? – Ash 2015-07-23 03:15:05

1

[IO.Directory]::GetCurrentDirectory().split('\\')[-1]會給你你是在目錄中。

1

試試這個

$dirname = resolve-path . | split-path -leaf 
Get-ChildItem -Name | Foreach { Rename-Item $_ ($dirname + $_) } 

要小心,不要破壞/刪除任何文件。沒有保證。

+0

感謝約翰!它有點奏效,但有一些意想不到的副作用! txt文件被重命名,但文件夾也被重命名爲tempaaa tempbbb tempccc。這實際上並不會引起我的問​​題,但如果您只是想重命名文件而不是文件夾,那麼您將被擰緊。有趣的是,你的方法與另一種方法有所不同 - 看起來像使用Powershell有許多方法可以爲貓皮!感謝您的幫助 – user1577314 2012-08-05 15:47:20

相關問題