這篇文章主要講解了“怎么用bat批處理實現批量修改文件名”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用bat批處理實現批量修改文件名”吧!
我們已經會使用循環命令對大量文件改名進行批量處理。但總結一下,該批處理并不是很健壯。
判斷一個程序的好壞,往往不是站在程序員的角度,而從用戶的角度出發。
比如:在用戶使用它的時候,如果輸入了不正確的路徑格式怎么辦?如果輸入了含有非法符號的前綴怎么辦?輸入的擴展名也有問題怎么辦?改完名后看不到是否執行成功的反饋信息,等等。帶著這些想法,我們將原程序再次修改一下。
:::::::批量修改文件名.bat::::::: @echo?off title?批量修改文件名 setlocal?EnableDelayedExpansion ::?啟用延遲變量擴充 :GetPath set?zpath=%CD% ::?對變量進行初始化,防止用戶不輸入而直接跳過。其中%CD%表示當前路徑 set?/p?zpath=請輸入目標文件所在的路徑: if?%zpath:~0,1%%zpath:~-1%==""?set?zpath=%zpath:~1,-1% ::?檢查變量?zpath?的第一個和最后一個字符是否為?""?,是的話就去掉 if?not?exist?"%zpath%"?goto?:GetPath ::?如果?zpath?值的路徑不存在,就得跳轉回去,要求重新輸入 :GetPrefix set?prefix=未命名 set?/p?prefix=請輸入文件名前綴(不能包含以下字符\/:*?"<>|): for?/f?"delims=\/:*?<>|?tokens=2"?%%i?in?("z%prefix%z")?do?goto?:GetPrefix ::?這里對變量?perfix?進行檢查,發現有非法符號便跳轉到?:GetPrefix ::?事實上,這里并沒有對雙引號?"?進行檢測,因為雙引號無法在此被轉義為可用的分隔符 ::?即使是在這個程序里,不正確地使用雙引號也會引起程序異常而退出。 ::?因此,想把它做的非常人性化并不是一件容易的事情 :GetExt set?ext=.* set?/p?ext=請輸入文件的擴展名(不輸入則表示所有類型): if?not?"%ext:~0,1%"=="."?set?ext=.%ext% ::?檢查變量?ext?的第一個是否為句點?.?,不是的話就加上 ::?建議這里對變量?ext?也檢查一下,發現有除*外的非法符號便跳轉到?:GetExtset?answer=N echo. echo?您試圖將?%zpath%\?里的所有?%ext%?類型的文件以?%prefix%?為前綴名進行批量改名,是否繼續? set?/p?answer=繼續請輸入?Y?,輸入其它鍵放棄... if?"%answer%"=="Y"?goto?:ReadyToRename if?"%answer%"=="y"?goto?:ReadyToRename echo?放棄文件改名,按任意鍵退出...?&?goto?:PauseThenQuit :ReadyToRename set?/a?num=0 echo. if?"%ext%"==".*"?( ??for?%%i?in?("%zpath%\*%ext%")?do?( ????set?/a?num+=1 ????ren?"%%i"?"%prefix%!num!%%~xi"?||?echo?文件?%%i?改名失敗?&&?set?/a?num-=1 ??) )?else?( ??for?%%i?in?("%zpath%\*%ext%")?do?( ????set?/a?num+=1 ????ren?"%%i"?"%prefix%!num!%ext%"?||?echo?文件?%%i?改名失敗?&&?set?/a?num-=1 ??) ) if?%num%==0?echo?%zpath%\?里未發現任何文件。按任意鍵退出...?&?goto?:PauseThenQuit echo?文件改名完成,按任意鍵退出... :PauseThenQuit pause>nul ::::::::::::::::::::::::::::::::
感謝各位的閱讀,以上就是“怎么用bat批處理實現批量修改文件名”的內容了,經過本文的學習后批量修改文件名bat沒用,相信大家對怎么用bat批處理實現批量修改文件名這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章批量修改文件名bat沒用,歡迎關注!