Dateien und Unterverzeichnisse in DOS löschen

Das Aufräumen von Festplatten oder Disketten kann schnell in Streß ausarten, wenn Sie z. B. Directories löschen wollen, die eine ganze Reihe von anderen Unterverzeichnissen beinhalten. Die Eingabe von »RD Verzeichnis« (Remove Directory) endet häufig mit der Fehlermeldung »Ungültiger Suchweg, kein Verzeichnis oder Verzeichnis nicht leer!«. DELDIR.DEB löscht nach Beantwortung einer Sicherheitsfrage sämtliche Dateien eines Unterverzeichnisses. Sind weitere Subdirectories vorhanden, löscht DELDIR auch deren Inhalt und entfernt sie. Das Vorankommen des Löschvorgangs können Sie auf dem Bildschirm verfolgen. Das Programm sichert zunächst den aktuellen Laufwerksbuchstaben und das momentane Verzeichnis, um anschließend in das als Parameter übergebene Verzeichnis zu wechseln und dort mit der rekursiven Löschprozedur zu beginnen:

Zuerst werden sämtliche Dateien über eine »FCB«-funktion gelöscht. Danach bearbeitet DELDIR wie bereits erwähnt mögliche Unterverzeichnisse. Zum Schluß bleibt das angegebene Verzeichnis übrig, das nun komplett leer ist und mit »RD« gelöscht werden kann. Vorsicht! DELDIR ist extrem gefährlich! Es löscht nach der Beantwortung einer einzigen Rückfrage rigoros ein komplettes Verzeichnis – auch versteckte oder »Read Only«-Dateien! Die Eingabe »DELDIR C:\« bedeutet z. B. bei versehentlichem Bejahen der Sicherheitsabfrage mit »J« den sicheren Festplattentod!

Name: DELDIR.DEB
Funktion: Löscht alle Dateien und Unterverzeichnisse eines gewünschten Verzeichnisses.
Übersetzung: DEBUG <DELDIR.DEB
Prüfsumme: 85F4
Anwendung: DELDIR Verzeichnis
Einschränkungen: Vorsicht! »DELDIR C:\« löscht nach »J« rigoros die gesamte Festplatte!
A
MOV AH,19           ;100
INT 21              ;102
XCHG AL,[5C]        ;104
MOV DL,AL           ;108
DEC DL              ;10A
JS 114              ;10C
MOV AH,E            ;10E
INT 21              ;110
JB 16C              ;112
MOV SI,234          ;114
MOV By[SI-1],5C     ;117
MOV DL,0            ;11B
MOV AH,47           ;11D
INT 21              ;11F
JB 16C              ;121
MOV BX,[80]         ;123
MOV By[BX+E081],0   ;127
MOV DX,82           ;12C
MOV AH,3B           ;12F
INT 21              ;131
JB 165              ;133
MOV DX,1E7          ;135
CALL 177            ;138
MOV AX,C07          ;13B
INT 21              ;13E
OR AL,20            ;140
CMP AL,6A           ;142
MOV CX,6            ;144
MOV DX,203          ;147
CALL 177            ;14A
LOOP 147            ;14D
MOV AX,C00          ;14F
INT 21              ;152
MOV Wo[175],1BD     ;154
JNZ 165             ;15A
CALL 17C            ;15C
MOV Wo[175],1B9     ;15F
MOV DX,233          ;165
MOV AH,3B           ;168
INT 21              ;16A
MOV DL,[5C]         ;16C
MOV AH,E            ;170
INT 21              ;172
MOV DX,1C9          ;174
MOV AH,9            ;177
INT 21              ;179
RET                 ;17B
MOV DL,2E           ;17C
MOV AH,2            ;17E
INT 21              ;180
MOV DX,207          ;182
MOV AH,13           ;185
INT 21              ;187
MOV DX,1FF          ;189
MOV CX,37           ;18C
MOV AH,4E           ;18F
INT 21              ;191
JB 17B              ;193
MOV AH,4F           ;195
CMP By[9E],2E       ;197
JZ 191              ;19C
MOV DX,9E           ;19E
MOV AH,3A           ;1A1
INT 21              ;1A3
JNB 189             ;1A5
MOV AH,3B           ;1A7
INT 21              ;1A9
JB 17B              ;1AB
CALL 17C            ;1AD
MOV DX,1E4          ;1B0
MOV AH,3B           ;1B3
INT 21              ;1B5
JMP 189             ;1B7
DB " Ok$Abgebrochen$"
DB "Verzeichnis nicht "
DB "gefunden$..",0
DB "Sind Sie sicher? "
DB "(J/N) $*.*",0,8,20
DW 2408,FF,0,0,2F
DB "????????","???"
 
RCX
11A
NDELDIR.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot