最近接到一個任務,有很多圖像文件(JPG格式)存放在某一路徑下的很多子文件夾中,現在需要把它們的名字打印到一個txt中。
最開始想到的是,從DOS進入到每個子文件夾中,使用命令:dir /b >info.txt, 將該子文件夾下的所有圖像名字打印到info.txt中,但是子文件夾的個數太多,得不停的回退到上一目錄,又進入下一目錄,真是太麻煩,於是想有沒有更簡單的方法。
在網上搜到批處理的for命令可以解決這一問題,在當前路徑中新建一個txt文件,輸入如下命令:
for /r E:/2003/04 %%i in (*.jpg) do echo %%i >> 2003_04.txt
pause
把后綴改成.bat運行即可。
說明:1)/r 可以遞歸的搜索當前路徑或指定路徑下的所有文件名;
2)E:/2003/04 即為當前路徑,如果不寫的話是指.bat所在路徑,存放圖像的子文件夾都位於這一路徑中;
3)%%i 為搜索到的文件名,i是變量名,當然也可以是n或者其他(在DOS窗口中輸入時只需要一個%),(*.jpg)指明了要搜索的文件類型;
4)do 之后是接下來要進行的處理命令;
5)echo %%i >> 2003_04.txt 表示將搜索到的文件名追加打印到2003_04.txt中, 如果僅有一個>,則后一個打印結果會覆蓋前一個,如果沒有>>2003_04.txt則將所有文件名打印到DOS窗口中;
6)pause 會在DOS窗口中打印“按任意鍵繼續...”,否則窗口就會一閃而過;
當然,打印出的文件名是帶路徑的,接下來將“*\”替換為空即可(這里先復制到excel進行替換,txt里好像還替換不了)。
PS:1)這里只是就事論事的記錄了一下解決我的問題的過程,更多更詳細的批處理命令及用法還請參見專業教程。
2)其實是一個很簡單的問題,高手會比我的方法更簡單快速。解決這個問題讓我感觸的是,不應該墨守常規,要不斷追求新方法,以使我們的工作更高效。