2012-09-06 29 views
5

我想選擇使用Get-ChildItem輸送到Rename-Item文件的列表,並與每行顯示像「更名oldfilenamenewfilename」輸出顯示文本。在powershell中,如何使用Rename-Item同時輸出新舊文件名?

我怎樣才能做到這一點?

+1

我有點PowerShell的無知的,所以我一掙扎小。我玩過Tee-Object和-outvariable和-passthru,但說實話我並不真正知道自己在做什麼,這感覺應該是一件容易的事情。 –

回答

7
Get-Childitem C:\Temp | 
    Foreach-object { 
     $OldName = $_.name; 
     $NewName = $_.name -replace 'temp','test'; 
     Rename-Item -Newname $NewName; 
     Write-Output $("Renamed {0} to {1}" -f $OldName,$NewName) 
     } 
+1

這一個吸引我爲非常可讀。 –

6

一個簡單的解決方案是運行rename-item-WhatIf。這將顯示類似

PS H:\test> gci | rename-item -newname { $_.name -replace 'temp','test' } -WhatIf 
What if: Performing operation "Rename File" on Target "Item: H:\test\temp1 Destination: H:\test\test1". 

夠好,或者你需要做它同時還做操作?

編輯:一個更簡單的解決方案,使用-Verbose。是否同爲-WhatIf,而且在執行操作:)

+0

感謝您的支持 - 如果可能,我希望在輸出上獲得不錯的格式。詳細的和假設的工作,但輸出不太可讀。儘管如此,我仍會投票贊成。 –

4

你可以這樣說:

gci . | %{ rename-item -Path $_.fullname -NewName ($_.name + 1); Write-Host "Renamed $($_.fullname) to $($_.name + 1)"} 
相關問題