遞歸地對目錄中的所有文件做同一操作 | DOS腳本

問題來源

曾經有一個師弟幫我做了一個簡單的加密程序,是一個BAT文件,也就是下面代碼中引用的CC.bat。現在,我想把D:\test目錄下所有的文件,包括多級嵌套子目錄的文件,都用這個程序來進行一次處理。該怎么做呢?


V1版本

源代碼

set work_path=D:\test
D:
cd %work_path%
for /R %%s in (*) do (
echo %%s
call D:\BAT\CC.bat %%s
)
cd D:\BAT
pause

使用方法

  1. 在文本編輯器中輸入上述代碼,然后將文件保存為.bat文件,比如,try.bat
  2. 在cmd窗口中輸入,try.bat即可執行。

測試結果

  • WinXP
    部分可用,對于較長串的文件名有Bug

TODO

將上例中的work_path改為命令行參數形式


V2版本

考慮到大家已經不喜歡cmd窗口了,我決心把上面的腳本改造成為一個可在窗口中雙擊啟動的版本。

源代碼

for /R %%s in (*) do (
echo %%s
call D:\\CC.bat %%s  
)
pause
備注

至于為什么要將CC.bat放在一個絕對路徑下面,是因為CC.bat本身的原因,不能與 try.bat放在同一個目錄下。

使用方法

  1. 在文本編輯器中輸入上述代碼,然后將文件保存為.bat文件,比如,try.bat
  2. try.bat拷貝到你想要操作的那個文件夾。
  3. 雙擊try.bat即可對當前目錄及其子目錄中的所有文件做同一操作。

測試結果

  • WinXP
    部分可用,對于較長串的文件名有Bug

TODO

不知道DOS腳本是否支持正則表達式,應該借助正則表達式將這個腳本更新為只對某些類型的文件做操作。


靈感來源

感想

天下代碼一大抄,為我所用即為高,:)


后續

今天(2021年10月29日),又碰到這個知識點哦,看我如何把某個文件夾里所有子文件夾、子子文件夾中的PDF文件全部到當前目錄下!!!

源代碼

for /R %%s in (*.pdf) do (
copy %%s .
)
pause
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容