deltree

deltree

deltree為DOS操作系統中的外部刪除命令,其作用是將整個目錄及其下屬子目錄和文件刪除,在使用時務必要謹慎。

語法及參數


deltree [/Y] [驅動器:]路徑 [[驅動器:]路徑[...]]
[/Y]:跳過確認刪除(Y/N)提示。
[驅動器:]路徑[...]:
指定需要刪除的目錄。
[[驅動器:]路徑[...]]:
這表示您可以同時列舉多個待刪除的目錄。
例如:"deltree c:\dir111 c:\dir222" 將對驅動器C下的dir111、dir222兩個目錄執行deltree。

由來和意義


DOS系統提供內部命令RD(RMDIR)用來刪除目錄。但RD有一個巨大的局限性,就是只能刪除沒有子目錄/子文件純正的空目錄。
造成這個局限性的原因在於,RD命令的實質僅限於將目錄從驅動器的“文件分配表(FAT)”中刪去。如果無視整個目錄樹的存在而直接從FAT中刪去目錄,將會造成子目錄和整體文件夾結構的“斷鏈”,導致磁碟剩餘空間分配以及目錄結構管理的混亂。
所以RD命令在執行前將自行判斷是否有子目錄/子文件存在。如果目錄非空,將會直接提示"The directory is not empty."而拒絕刪除。這也就是我們經常說的“RD只能刪除空目錄”。
但在實際應用中,用戶往往需要將一個目錄的整個目錄樹刪除。如果用RD命令實現,需要進入層次最深的子目錄,刪除所有文件,再刪除空的子目錄……一層一層往複循環,操作的繁雜是可想而知的。
所以DOS以外部命令的形式提供了“deltree.exe”用來方便地刪除目錄樹。提供deltree的目的是為了簡化用戶操作。
deltree的內部原理實際上也是對每個子目錄進行遞歸訪問,逐層進行"del *.*"和"rd"。可以認為deltree是內部命令的有機組合,這也就是將deltree提供為外部命令的原因。

危險性


幾乎所有DOS書籍中都將"deltree"與"format c:", "del*.*", "fdisk"等並列為初學者慎用的“危險命令”。這是不無道理的,因為deltree命令刪除一個目錄是徹底且方便的,無論目錄中有多少子文件、子目錄,deltree都可以“一步到位”地完成刪除。
所以請使用deltree之前自行檢查目錄中是否有需要保留的內容。同時也建議初學者,不要在系統目錄下,或存有重要內容的驅動器中試用deltree,以免造成系統故障和數據丟失。

屬性的影響


deltree在刪除目錄時無視整個目錄樹的只讀、隱藏、存檔、系統四項屬性。無論目錄本身的屬性,還是各級子目錄、子文件的屬性都不會影響deltree的運作。
利用這一特點可以在deltree清除病毒目錄時省去attrib -a -r -h -s。
但與此同時,deltree無視屬性的特點也是deltree的另一大危險性,必須加以重視。

獲得


也許在某些情況下需要獲得deltree.exe。而實際的經驗表明,deltree.exe不容易在網際網路上下載到。
在希望得到deltree.exe時,一種較為使用的方法是,找到一張Windows 98安裝盤,從“WIN98_22.CAB”中解壓縮deltree.exe文件。
或者,也可以在安裝有Windows 98的系統上,從“*:\WINDOWS\COMMAND”目錄下複製。
在Windows 98啟動軟盤中也有deltree.exe。請從A:\EBD.CAB中解壓縮。

純DOS程序 / Windows2000/XP相關


deltree.exe是一個16位的DOS程序。在Windows2000/XP的“命令行模式”中,Windows需要調用“16位虛擬機(ntvdm)”來執行deltree.exe。
Windows2000/XP的命令行模式不再提供deltree.exe。
在Windows2000/XP的命令行模式下刪除目錄樹請用RD /S。
請注意:純DOS(Win9X的DOS7.0及其之前)下的RD不能刪除目錄樹,無/S,/Q參數。在使用純DOS修系統時請老老實實deltree。
附:Windows2000/XP的RD命令幫助信息全文 (RD /?)
刪除一個目錄。
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
/S 除目錄本身外,還將刪除指定目錄下的所有子目錄和文件。用於刪除目錄樹。
/Q 安靜模式,帶 /S 刪除目錄樹時不要求確認

看法


在現在的應用中,WinXP/2000的命令提示符(cmd)中,甚至是命令行安全模式中,都可以使用RD /S命令。而在純DOS檢修系統的過程中,“無憂啟動”等依託光碟啟動而實現的維修工具集也得到了廣泛的應用。其中自然包含了DOS版資源管理器等許多有用的文件管理工具。deltree的功能有許多優秀的替代品來實現。
所以,今天來看,deltree應該更多的作為DOS的昨日經典來看待。

附:deltree幫助信息原文 (deltree /?)


Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.