Parameter in DOS auswerten 1

Auf der DOS-Ebene gibt es außer über »IF ERRORLEVEL …« bisher keine Möglichkeit, Ergebnisse, gleich welcher Art, auszuwerten und in Stapeljobs – beispielsweise aufgrund bestimmter Bildschirmausgaben – konkrete Entscheidungen zu treffen. Viele Programme liefern darüberhinaus überhaupt keinen Errorlevel, sodaß Ihnen außer der visuellen Kontrolle nicht die geringste Entscheidungsmöglichkeit zur Verfügung steht. Mit den folgenden vier Filtern sind Sie absofort nicht mehr darauf angewiesen, daß ein beliebiges Programm je nach Ergebnis der Ausführung auch wirklich einen entsprechenden Errorlevel setzt. In der Wirkung sind alle Programme genau wie im Abschnitt »Textausgaben manipulieren« gleich – der Unterschied liegt wieder im Detail.

INSTR.DEB überprüft, ob jedes Zeichen der ersten Zeile einer Textausgabe im Parameter vorkommt und teilt das Ergebnis im Errorlevel mit. Die Eingabe »ECHO 12345 | INSTR 12« liefert z. B. den Errorlevel 255, weil mindestens ein Zeichen, nämlich 3, 4 oder 5, nicht im zur Auswahl stehenden »Zeichensatz« vorkommt. Wären diese auch im Parameter aufgeführt, würde INSTR den Errorlevel auf 0 setzen. Die folgende Stapeldatei demonstriert eine Anwendung von INSTR, indem sie überprüft, ob als Parameter eine Ganzzahl angegeben wurde. Eine Abfrage dieser Art ist z.B. bei einer Stapeldatei zum automatischen Einrichten einer RAM-Disk sinnvoll, weil ein ungültiger Parameter sich dort ja erst nach dem nächsten Systemstart zeigen würde.

@ECHO OFF
IF "%1"=="" GOTO FEHLER
ECHO %1|INSTR 1234567890
IF ERRORLEVEL 255 GOTO FEHLER
ECHO %1 ist eine Zahl.
REM Hier kann z.B. eine Anwendung stehen...
GOTO ENDE
:FEHLER
ECHO Bitte eine Ganzzahl als Parameter angeben!
:ENDE
Name: INSTR.DEB
Funktion: Überprüft, ob sämtliche Zeichen einer Textausgabe im Parameter vorkommen
Übersetzung: DEBUG <INSTR.DEB
Prüfsumme: 2597
Anwendung: INSTR … <DateiIF ERRORLEVEL # … = Satz von Zeichen # = 0: sämtliche Zeichen kommen vor # = 255: mindestens ein Zeichen fehlt
Einschränkungen: ./.
A
CLD                 ;100
MOV DL,FF           ;101
MOV AH,6            ;103
INT 21              ;105
JZ 121              ;107
CMP AL,D            ;109
JZ 121              ;10B
MOV DI,82           ;10D 
MOV CX,[80]         ;110
SUB CX,2001         ;114
REPNZ SCASB         ;118
JZ 101              ;11A
MOV AX,4CFF         ;11C
INT 21              ;11F
RET                 ;121

RCX
22
NINSTR.COM
W
Q

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