PCOMP.DEB vergleicht die Textausgabe eines Programms mit dem als Parameter angegebenen Text. Der Filter prüft, ob die empfangenen Zeichen mit dem Parameter übereinstimmen und setzt den Errrolevel auf 1, falls der Vergleich nicht stimmt. Ansonsten bleibt der Errrolevel 0 übrig. PCOMP erwartet zum Zeitpunkt des Aufrufes, daß die zu empfangenden Zeichen bereits da sind. Übersteigt die Anzahl der empfangen Zeichen die des Vergleichstextes, wird der Rest einfach ignoriert. Mit »CD | PCOMP C:\WORD« können Sie z.B. ganz einfach überprüfen, ob Sie sich gerade im Verzeichnis C:\WORD befinden. Weil PCOMP aber den Rest der Ausgabe durch »CD« ignoriert, liefert diese Abfrage auch im Verzeichnis C:\WORD\TEXTE den Errorlevel 0. Dem können Sie aber leicht mit dem Filter PCOMPCR abhelfen. Wenn Sie nicht sicher sind, welche Zeichenfolge die richtige ist, verwenden Sie einfach das Fragezeichen als »Wildcard«. Probieren Sie folgenden Stapeljob aus:
@ECHO OFF CD | PCOMP A:\T?P IF ERRORLEVEL 1 GOTO FALSCH :RICHTIG ECHO Entweder sind Sie im Verzeichnis ECHO A:\TIP oder A:\TOP... GOTO ENDE :FALSCH ECHO Sie sind weder im Verzeichnis ECHO A:\TIP noch A:\TOP... :ENDE
Name: | PCOMP.DEB |
Funktion: | Vergleicht empfangene Zeichen mit einem Parameter. |
Übersetzung: | DEBUG <PCOMP.DEB |
Prüfsumme: | B07B |
Anwendung: | z.B. CD | PCOMP … oder PCOMP …<DateiIF ERRORLEVEL # … = Zeichenkette (? als Wildcard erlaubt) # = 1: Der Anfang des Textes stimmt nicht mit der Zeichenkette überein # = 0: Der Anfang des Textes stimmt mit der Zeichenkette
überein |
Einschränkungen: | Für jedes Fragezeichen muß im Unterschied zum DIR-Befehl genau 1 Zeichen kommen. Es kann nur der Anfang
des Textes verglichen werden. |
A CLD ;100 MOV DI,82 ;101 MOV AX,4C00 ;104 CMP By[DI],D ;107 JZ 11A ;10A MOV DL,FF ;10C MOV AH,6 ;10E INT 21 ;110 JZ 117 ;112 SCASB ;114 JZ 104 ;115 MOV AX,4C01 ;117 INT 21 ;11A RCX 1C NPCOMP.COM W Q
Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot