国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > BAT > 正文

批處理實現批量修改文件名

2020-03-29 19:54:01
字體:
來源:轉載
供稿:網友

我們已經會使用循環命令對大量文件改名進行批量處理。但總結一下,該批處理并不是很健壯。

判斷一個程序的好壞,往往不是站在程序員的角度,而從用戶的角度出發。

比如:在用戶使用它的時候,如果輸入了不正確的路徑格式怎么辦?如果輸入了含有非法符號的前綴怎么辦?輸入的擴展名也有問題怎么辦?改完名后看不到是否執行成功的反饋信息,等等。帶著這些想法,我們將原程序再次修改一下。

:::::::批量修改文件名.bat:::::::@echo offtitle 批量修改文件名setlocal EnableDelayedExpansion:: 啟用延遲變量擴充:GetPathset 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 值的路徑不存在,就得跳轉回去,要求重新輸入:GetPrefixset prefix=未命名set /p prefix=請輸入文件名前綴(不能包含以下字符//:*?"<>|):for /f "delims=//:*?<>| tokens=2" %%i in ("z%prefix%z") do goto :GetPrefix:: 這里對變量 perfix 進行檢查,發現有非法符號便跳轉到 :GetPrefix:: 事實上,這里并沒有對雙引號 " 進行檢測,因為雙引號無法在此被轉義為可用的分隔符:: 即使是在這個程序里,不正確地使用雙引號也會引起程序異常而退出。:: 因此,想把它做的非常人性化并不是一件容易的事情:GetExtset ext=.*set /p ext=請輸入文件的擴展名(不輸入則表示所有類型):if not "%ext:~0,1%"=="." set ext=.%ext%:: 檢查變量 ext 的第一個是否為句點 . ,不是的話就加上:: 建議這里對變量 ext 也檢查一下,發現有除*外的非法符號便跳轉到 :GetExtset answer=Necho.echo 您試圖將 %zpath%/ 里的所有 %ext% 類型的文件以 %prefix% 為前綴名進行批量改名,是否繼續?set /p answer=繼續請輸入 Y ,輸入其它鍵放棄...if "%answer%"=="Y" goto :ReadyToRenameif "%answer%"=="y" goto :ReadyToRenameecho 放棄文件改名,按任意鍵退出... & goto :PauseThenQuit:ReadyToRenameset /a num=0echo.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 :PauseThenQuitecho 文件改名完成,按任意鍵退出...:PauseThenQuitpause>nul::::::::::::::::::::::::::::::::

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江西省| 房产| 聊城市| 郎溪县| 泽普县| 洪雅县| 洪江市| 根河市| 康马县| 安庆市| 忻州市| 平江县| 永善县| 高唐县| 钟祥市| 彰武县| 汤原县| 博湖县| 磴口县| 台南县| 兴文县| 运城市| 吴川市| 虹口区| 天峨县| 东乌珠穆沁旗| 页游| 墨竹工卡县| 遂平县| 图木舒克市| 牙克石市| 托克逊县| 昌邑市| 桦川县| 海兴县| 金沙县| 湖口县| 扶绥县| 喀什市| 锦州市| 通州市|