在win9x的年代,用deltree這個外部命令就很容解決這個問題,不過從windows 2000 及windows xp之后,就取消了這個命令(真的是很奇怪),那么現在怎么解決呢?大家可能想到用 del+rd來解決這個問題。但有個問題,就是rd命令會刪除您指定的目錄。例如,當前目錄結構如下:
D:/>attrib /s /d d:/test/*.*
A R I D:/test/1.txt 此文件帶有只讀屬性
A H I D:/test/2.txt 此文件帶有隱藏屬性
A S I D:/test/3.txt 此文件帶有系統屬性
H I D:/test1/1 此目錄帶有隱藏屬性
A R I D:/test/1/4.txt 此文件帶有只讀屬性
S I D:/test1/2 此目錄帶有系統屬性
A R I D:/test1/2/5.txt 此文件帶有只讀屬性
批處理原理 如果您這么執行命令 rd d:/test,那么rd會將test這個目錄連同其中的內容一起刪除掉,而我們要保留test這個目錄。那么怎么辦呢?我們可以先用del把d:/test目錄下的文件刪除掉,然后再用rd把子目錄刪除掉。這個批處理的內容如下,大家將如下內容保存為后綴名為.bat 或者.cmd的文本文件,例如就叫 deltree.bat吧。
---不包含此行---
attrib -s -h -r %1/*.* && del %1/*.* /q
dir %1 /ad /b /s >del.txt
for /f %%i in (del.txt) do rd %%i /s /q
---不包含此行---
那么當我們需要刪除test目錄的時候,就這么執行 "deltree.bat d:/test"(不包含引號)。
批處理第一行 第一行批處理中的%1就會讀取批處理參數,變成這樣 attrib -s -h -r d:/test/*.* && del d:/test/*.* /q
先用attrib 去掉test目錄下所有文件的屬性,以保障后面的del順利執行。
&& 是連接符號,當執行完前面的命令后,執行連接符后面的命令。
del刪除 test目錄下所有文件,因為rd命令是無法刪除test目錄下的文件的。好,test下的文件刪除完了,我們就開始刪除test目錄下的子目錄。
批處理第二行 批處理執行到第二行,%1讀取批處理參數,就是我們在deltree后面輸入的的 d:/test,變成這樣 dir d:/test /ad /b /s >del.txt 這里dir命令后的各參數含義如下:
新聞熱點
疑難解答