批處理實(shí)現(xiàn)批量修改文件名
我們已經(jīng)會使用循環(huán)命令對大量文件改名進(jìn)行批量處理。但總結(jié)一下,該批處理并不是很健壯。
判斷一個程序的好壞,往往不是站在程序員的角度,而從用戶的角度出發(fā)。
比如:在用戶使用它的時候,如果輸入了不正確的路徑格式怎么辦?如果輸入了含有非法符號的前綴怎么辦?輸入的擴(kuò)展名也有問題怎么辦?改完名后看不到是否執(zhí)行成功的反饋信息,等等。帶著這些想法,我們將原程序再次修改一下。
:::::::批量修改文件名.bat::::::: @echo off title 批量修改文件名 setlocal EnableDelayedExpansion :: 啟用延遲變量擴(kuò)充 :GetPath set zpath=%CD% :: 對變量進(jìn)行初始化,防止用戶不輸入而直接跳過。其中%CD%表示當(dāng)前路徑 set /p zpath=請輸入目標(biāo)文件所在的路徑: if %zpath:~0,1%%zpath:~-1%=="" set zpath=%zpath:~1,-1% :: 檢查變量 zpath 的第一個和最后一個字符是否為 "" ,是的話就去掉 if not exist "%zpath%" goto :GetPath :: 如果 zpath 值的路徑不存在,就得跳轉(zhuǎn)回去,要求重新輸入 :GetPrefix set prefix=未命名 set /p prefix=請輸入文件名前綴(不能包含以下字符\/:*?"<>|): for /f "delims=\/:*?<>| tokens=2" %%i in ("z%prefix%z") do goto :GetPrefix :: 這里對變量 perfix 進(jìn)行檢查,發(fā)現(xiàn)有非法符號便跳轉(zhuǎn)到 :GetPrefix :: 事實(shí)上,這里并沒有對雙引號 " 進(jìn)行檢測,因?yàn)殡p引號無法在此被轉(zhuǎn)義為可用的分隔符 :: 即使是在這個程序里,不正確地使用雙引號也會引起程序異常而退出。 :: 因此,想把它做的非常人性化并不是一件容易的事情 :GetExt set ext=.* set /p ext=請輸入文件的擴(kuò)展名(不輸入則表示所有類型): if not "%ext:~0,1%"=="." set ext=.%ext% :: 檢查變量 ext 的第一個是否為句點(diǎn) . ,不是的話就加上 :: 建議這里對變量 ext 也檢查一下,發(fā)現(xiàn)有除*外的非法符號便跳轉(zhuǎn)到 :GetExt set answer=N echo. echo 您試圖將 %zpath%\ 里的所有 %ext% 類型的文件以 %prefix% 為前綴名進(jìn)行批量改名,是否繼續(xù)? set /p answer=繼續(xù)請輸入 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%\ 里未發(fā)現(xiàn)任何文件。按任意鍵退出... & goto :PauseThenQuit echo 文件改名完成,按任意鍵退出... :PauseThenQuit pause>nul ::::::::::::::::::::::::::::::::
上一篇:BAT批處理實(shí)現(xiàn)軟件的自動安裝(以搜狗拼音為例)
欄 目:DOS/BAT
下一篇:批處理制作二維碼生成器
本文標(biāo)題:批處理實(shí)現(xiàn)批量修改文件名
本文地址:http://mengdiqiu.com.cn/a1/DOS_BAT/10090.html
您可能感興趣的文章
- 01-10使用批處理實(shí)現(xiàn)軟件的自動安裝以安裝搜狗拼音為例
- 01-10通過批處理修改DNS的代碼(推薦)
- 01-10windows使用批處理發(fā)布web到tomcat并啟動tomcat腳本分享
- 01-10再談DOS批處理下格式化日期字符串的三種方法(詳解)
- 01-10用批處理一鍵安裝兩種擴(kuò)展名的Windows系統(tǒng)補(bǔ)丁
- 01-10ip地址切換批處理腳本分享
- 01-10批處理?xiàng)钶x三角效果實(shí)現(xiàn)代碼
- 01-10將批處理文件注冊成服務(wù)在系統(tǒng)啟動的時候自動調(diào)用
- 01-10批處理輸出n階幻方腳本
- 01-10dos批處理文件中的變量小結(jié)


閱讀排行
本欄相關(guān)
- 01-10DOS下查看硬盤分區(qū)該使用什么命令
- 01-10使用批處理實(shí)現(xiàn)軟件的自動安裝以安
- 01-10后臺運(yùn)行bat定時器程序示例分享
- 01-10通過批處理修改DNS的代碼(推薦)
- 01-10dota2服務(wù)器ping測試腳本分享
- 01-10再談DOS批處理下格式化日期字符串的
- 01-10windows使用批處理發(fā)布web到tomcat并啟動
- 01-10win7怎么設(shè)定關(guān)閉顯示器時間
- 01-10屏蔽up鍵禁止游戲運(yùn)行腳本分享
- 01-10win7創(chuàng)建wifi熱點(diǎn)腳本分享
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文