Errorlevel in DOS checken

Viele unserer Tips und Tricks liefern einen Errorlevel als Ergebnis. Um ihn auswerten zu können, ist deshalb mindestens ein Stapeljob erforderlich, der je nach Ergebnis eine Entscheidung trifft (IF ERRORLEVEL…). Zu Testzwecken ist es jedoch häufig praktischer, den Errorlevel direkt auf den Bildschirm auszugeben. ERRORLVL.DEB zeigt den Errorlevel des zuletzt ausgeführten Programms im Bereich 0 bis 255 an. In Klammern folgt der einstellige Beendigungscode, der darüber Auskunft gibt, ob ein Programm normal beendet (0), oder mit der Break-Taste abgebrochen wurde (1). Außerdem erfahren Sie, ob das Programm resident bleibt (2), oder wegen eines kritischen Fehlers beendet (3). ERRORLVL durchsucht den Kommando-Interpreter COMMAND.COM nach einer bestimmten Befehlsfolge, aus der die Speicheradresse des ERRORLEVELs hervorgeht. Weil unter DOS keine Möglichkeit vorgesehen ist, den ERRORLEVEL in einem Programm abzufragen, gibt es leider keine Garantie, ob ERRORLVL unter jeder DOS-Version auch wirklich funktioniert.

Name: ERRORLVL.DEB
Funktion: Gibt den aktuellen Errorlevel mit Beendigungscode aus.
Übersetzung: DEBUG <ERRORLVL.DEB
Prüfsumme: F3E2
Anwendung: ERRORLVL
Einschränkungen: ./.
A
MOV ES,[C]          ;100
MOV DI,100          ;104
MOV CX,4000         ;107
MOV AL,B4           ;10A
REPNZ SCASB         ;10C
JNZ 149             ;10E
ES:CMP Wo[DI],CD4D  ;110
JNZ 10C             ;115
ES:CMP Wo[DI+2],2E21;117
JNZ 10C             ;11D
ES:MOV SI,[DI+5]    ;11F
ES:MOV AX,[SI]      ;123
ADD [14C],AH        ;126
CALL 134            ;12A
MOV DX,14A          ;12D
MOV AH,9            ;130
JMP 147             ;132
AAM                 ;134
PUSH AX             ;136
CMP AH,0            ;137
JZ 141              ;13A
MOV AL,AH           ;13C
CALL 134            ;13E
POP DX              ;141
ADD DL,30           ;142
MOV AH,2            ;145
INT 21              ;147
RET                 ;149
DB " (0)$"

RCX
4F
NERRORLVL.COM
W
Q

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