close
假設我們要清理D磁碟區上的空資料夾,那麼請先用筆記本建一個名為「kill.bat」的檔案,在該檔案中輸入以下內容:


dir d: /ad /b /s |sort /r >>d:kill.txt
For /f %%i in (d:kill.txt) DO rd %%i
echo y |del d:kill.txt


按兩下該檔案,D磁碟區上全部的空資料夾很快就消失的無影無蹤了。




參數解釋:


「dir d:」表示列出D磁碟區上的全部目錄包括子目錄清單,其中參數「/ad」表示列全部目錄;參數「/b」表示只列出資料夾名稱而不顯示標題資訊或摘要;參數「 /s」表示搜索,即尋找D磁碟區中的全部資料夾和子目錄;「|」是管道符號,將Dir指令的結果傳遞給「sort」指令;「sort」指令表示排序;「 /r」表示逆序列排序。之所以要逆序列排序,是因為透過逆序列排序後,D磁碟區上的全部子目錄總是會位於其主目錄的前面,這樣在用For指令刪除空資料夾時,空的子目錄被首先刪除了,因此空的主目錄就可以刪除了。否則,因空的主目錄中尚有空的子目錄,會造成無法刪除的情況。「>>d:kill.txt」的作用是讓螢幕回顯重新定位到「d:kill.txt」檔案中。


For 指令中參數「/f」的作用是讓For指令從指定的檔案中讀取資料作為變數,範例是從Dir的結果檔案「d:kill.txt」檔案中讀取資料,每次讀取一行傳遞給RD指令;RD指令的作用是刪除由For指令傳遞過來的每一個資料夾,因RD指令無法刪除尚有內容的資料夾,所以經過For指令的循環後,只是刪除了全部的空資料夾,有內容的資料夾會完好無損地被保留下來。


————————————或下列代碼——————————————————
@echo off @for /f "tokens=*" %%a in ('dir /b /a:d /s d:\folder^|sort /r') do @rd "%%a" /q pause
arrow
arrow
    全站熱搜

    hses 發表在 痞客邦 留言(0) 人氣()