關鍵字: PowerShell, 重命名, 遍歷路徑
最近遇到個小問題, windows的文件名和路徑名里帶特殊字符"?"導致文件讀取出錯.
根本原因在于一些軟件在處理的時候, 不認識這個"?".
那么我們的思路是, 把"?"改成"_"之類的可以識別的字符不就解決了?
???, 就這么簡單?
Yes, 沒錯, 就是這么簡單.
但是考慮到重命名的文件數量可能比較龐大, 這么簡單枯燥還"巨量"的活當然交給電腦去解決啊, 只需要雙擊就搞定, 媽媽再也不用擔心我鼠標手和頸椎病了.
涉及到"?"的話, 很多腳本語言, vbs, bat都是不能很友好的處理的.
這里我選擇的是powershell, 從win7開始系統都支持哦, 也不需要擔心環境問題.
具體步驟:
- 遍歷路徑下面的每一個元素(包括: 文件和文件夾)
- 判斷名字中是否含有"?"
- 把名字中的"?"全部改成"_"
- ...已經解決拉, 快去干活吧你
代碼參考:
#以腳本文件所在的目錄為目標目錄
$CurrentyDir = Split-Path -Parent $MyInvocation.MyCommand.Definition;
#echo $CurrentyDir
#遍歷目錄中所有文件
Get-ChildItem $CurrentyDir | ForEach-Object -Process{
#判斷名字中是否含有"?"
if ($_.name.Contains("?")) {
#把名字中的"?"全部替換掉
$newName = $_.name -replace "?", "_";
$fulOldPath = $CurrentyDir + "\" +$_.name;
$fulNewPath = $CurrentyDir + "\" +$newName;
echo $fulOldPath;
echo $fulNewPath;
#重命名
Rename-Item -Path $fulOldPath -NewName $fulNewPath;
}
}
#友情提醒下已經完成了
$ws = New-Object -ComObject WScript.Shell
$wsr = $ws.popup("處理完成",0,"提示",1 + 64)