PowerShell批量重命名

關鍵字: PowerShell, 重命名, 遍歷路徑

最近遇到個小問題, windows的文件名和路徑名里帶特殊字符"?"導致文件讀取出錯.

根本原因在于一些軟件在處理的時候, 不認識這個"?".
那么我們的思路是, 把"?"改成"_"之類的可以識別的字符不就解決了?

???, 就這么簡單?

Yes, 沒錯, 就是這么簡單.
但是考慮到重命名的文件數量可能比較龐大, 這么簡單枯燥還"巨量"的活當然交給電腦去解決啊, 只需要雙擊就搞定, 媽媽再也不用擔心我鼠標手和頸椎病了.

涉及到"?"的話, 很多腳本語言, vbs, bat都是不能很友好的處理的.
這里我選擇的是powershell, 從win7開始系統都支持哦, 也不需要擔心環境問題.

具體步驟:

  1. 遍歷路徑下面的每一個元素(包括: 文件和文件夾)
  2. 判斷名字中是否含有"?"
  3. 把名字中的"?"全部改成"_"
  4. ...已經解決拉, 快去干活吧你

代碼參考:

#以腳本文件所在的目錄為目標目錄
$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)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。