問題來源
曾經(jīng)有一個(gè)師弟幫我做了一個(gè)簡(jiǎn)單的加密程序,是一個(gè)BAT文件,也就是下面代碼中引用的CC.bat
。現(xiàn)在嗤攻,我想把D:\test目錄下所有的文件考余,包括多級(jí)嵌套子目錄的文件,都用這個(gè)程序來進(jìn)行一次處理。該怎么做呢?
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
使用方法
- 在文本編輯器中輸入上述代碼,然后將文件保存為.bat文件仅孩,比如,
try.bat
印蓖。 - 在cmd窗口中輸入辽慕,
try.bat
即可執(zhí)行。
測(cè)試結(jié)果
- WinXP
部分可用赦肃,對(duì)于較長(zhǎng)串的文件名有Bug
TODO
將上例中的work_path
改為命令行參數(shù)形式
V2版本
考慮到大家已經(jīng)不喜歡cmd窗口了溅蛉,我決心把上面的腳本改造成為一個(gè)可在窗口中雙擊啟動(dòng)的版本绞旅。
源代碼
for /R %%s in (*) do (
echo %%s
call D:\\CC.bat %%s
)
pause
備注
至于為什么要將CC.bat
放在一個(gè)絕對(duì)路徑下面,是因?yàn)?code>CC.bat本身的原因温艇,不能與 try.bat
放在同一個(gè)目錄下因悲。
使用方法
- 在文本編輯器中輸入上述代碼,然后將文件保存為.bat文件勺爱,比如晃琳,
try.bat
。 - 把
try.bat
拷貝到你想要操作的那個(gè)文件夾琐鲁。 - 雙擊
try.bat
即可對(duì)當(dāng)前目錄及其子目錄中的所有文件做同一操作卫旱。
測(cè)試結(jié)果
- WinXP
部分可用,對(duì)于較長(zhǎng)串的文件名有Bug
TODO
不知道DOS腳本是否支持正則表達(dá)式围段,應(yīng)該借助正則表達(dá)式將這個(gè)腳本更新為只對(duì)某些類型的文件做操作顾翼。
靈感來源
- 感謝腳本之家佚名作者的《dos下遍歷目錄和文件的代碼(主要利用for命令)》
- 感謝簡(jiǎn)書作者Eurry的《[Markdown 語法說明]》,讓我在1小時(shí)內(nèi)排出這篇優(yōu)雅的筆記
感想
天下代碼一大抄奈泪,為我所用即為高适贸,:)
后續(xù)
今天(2021年10月29日),又碰到這個(gè)知識(shí)點(diǎn)哦涝桅,看我如何把某個(gè)文件夾里所有子文件夾拜姿、子子文件夾中的PDF文件全部擰到當(dāng)前目錄下!7胨臁蕊肥!
源代碼
for /R %%s in (*.pdf) do (
copy %%s .
)
pause