PowerShell:批次變更副擋名
這篇是臨時收到了工作上小小的需求。由於客戶給的檔案是存文字檔,但是副檔名不是txt。希望IT這裡協助看看有什麼方式可以一次整批更改副檔名.txt方便後續處理。
收到的檔案副擋名是.INV和.PCK。最早的版本如下。
Get-ChildItem -exclude "*.ps1"
| WHere-Object{!$_.PsIsContainer}
| Rename-Item -newname {$_.name + ".txt"}
想說這支PowerShell就跟這些文字檔放一起。User直接右鍵執行PowerShell就好。
原始檔名123.INV會變成123.INV.txt
原始檔名123.PCK會變成123.PCK.txt
後來想到,如果User檔名變更完畢之後一值把檔案放在原來的地方。目錄裡面的.txt會一直被往後疊加。每執行一次就變成123.INV.txt.txt……..
所以換個方式,我只針對指定的副檔名做疊加。
Get-ChildItem -filter "*.INV" | WHere-Object{!$_.PsIsContainer}| Rename-Item -newname {$_.name + ".txt"}
Get-ChildItem -filter "*.PCK" | WHere-Object{!$_.PsIsContainer}| Rename-Item -newname {$_.name + ".txt"}
這樣就算User處理完檔案沒有移走,也沒關係了。
如果以後有別種副檔名在加上去就好了。