我想選擇使用Get-ChildItem
輸送到Rename-Item
文件的列表,並與每行顯示像「更名oldfilename到newfilename」輸出顯示文本。在powershell中,如何使用Rename-Item同時輸出新舊文件名?
我怎樣才能做到這一點?
我想選擇使用Get-ChildItem
輸送到Rename-Item
文件的列表,並與每行顯示像「更名oldfilename到newfilename」輸出顯示文本。在powershell中,如何使用Rename-Item同時輸出新舊文件名?
我怎樣才能做到這一點?
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)
}
這一個吸引我爲非常可讀。 –
一個簡單的解決方案是運行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
,而且在執行操作:)
感謝您的支持 - 如果可能,我希望在輸出上獲得不錯的格式。詳細的和假設的工作,但輸出不太可讀。儘管如此,我仍會投票贊成。 –
你可以這樣說:
gci . | %{ rename-item -Path $_.fullname -NewName ($_.name + 1); Write-Host "Renamed $($_.fullname) to $($_.name + 1)"}
我有點PowerShell的無知的,所以我一掙扎小。我玩過Tee-Object和-outvariable和-passthru,但說實話我並不真正知道自己在做什麼,這感覺應該是一件容易的事情。 –