Verarbeitet Ausdrücke in einer Batchdatei abhängig von Bedingungen.
Verarbeitet Ausdrücke in einer Batchdatei abhängig von Bedingungen.
IF [NOT] ERRORLEVEL Nummer Befehl
IF [NOT] Zeichenfolge1==Zeichenfolge2 Befehl
IF [NOT] EXIST Dateiname Befehl
NOT Befehl wird nur dann ausgeführt, wenn die Bedingung nicht
erfüllt ist.
ERRORLEVEL Zahl Bedingung ist erfüllt, wenn das zuletzt ausgeführte
Programm einen Code größer oder gleich der Nummer
zurückgibt.
Zeichenfolge1==Zeichenfolge2
Bedingung ist erfüllt, falls die Zeichenfolgen gleich sind.
EXIST Dateiname Bedingung ist erfüllt, wenn die angegebene Datei existiert.
Befehl Gibt den Befehl an, der bei erfüllter Bedingung ausgeführt
werden soll. Diesem Befehl kann das Schlüsselwort ELSE
folgen. Der Befehl nach dem Wort ELSE wird ausgeführt, wenn
die angegebene Bedingung nicht erfüllt ist (FALSE).
Die ELSE-Klausel muss auf derselben Zeile mit dem Befehl nach IF stehen.
Zum Beispiel:
IF EXIST test.txt (
del test.txt
) ELSE (
echo test.txt fehlt
)
Die beiden folgenden Beispiele funktionieren nicht.
Im ersten Fall wird der DEL-Befehl nicht durch ein Zeilenende abgeschlossen:
IF EXIST test.txt del test.txt ELSE echo test.txt fehlt
In zweiten Fall befindet sich der ELSE-Befehl nicht auf derselben Zeile mit
dem IF Schlüsselwort:
IF EXIST test.txt del test.txt
ELSE echo test.txt fehlt
Hier ein Beispiel, wie alles auf einer Zeile angegeben werden kann:
IF EXIST test.txt (del test.txt) ELSE echo test.txt fehlt
Wenn die Befehlserweiterungen aktiviert sind, wird der
IF-Befehl folgendermaßen verändert:
IF Zeichenfolge1 Vergleichsoperator Zeichenfolge2 Befehl
IF CMDEXTVERSION Zahl Befehl
IF DEFINED Variable Befehl
Mögliche Vergleichsoperatoren:
EQU – gleich
NEQ – nicht gleich
LSS – kleiner als
LEQ – kleiner als oder gleich
GTR – größer als
GEQ – größer als oder gleich
Die /I-Option wird angegeben, um die Groß-/Kleinschreibung
beim Vergleich zu ignorieren. Die /I-Option kann auch in der Form
"Zeichenfolge1==Zeichenfolge2" von "IF" verwendet werden.
Diese Vergleiche sind allgemein, das heißt, wenn beide Zeichenfolgen
nur aus Ziffern bestehen, werden die Zeichenfolgen in Zahlen
umgewandelt, und es wird ein numerischer Vergleich durchgeführt.
Die Bedingung "CMDEXTVERSION" arbeitet genau wie "ERRORLEVEL", nur
dass dabei mit einer internen Versionsnummer der Befehlserweiterungen
verglichen wird. Die erste Versionsnummer ist "1". Diese wird um eins erhöht,
wenn bedeutende Verbesserungen an den Befehlserweiterungen vorge-
nommen werden.
Die Bedingung "CMDEXTVERSION" ist falsch, wenn die Befehlserweiterungen
nicht aktiviert sind.
Die Bedingung "DEFINED" arbeitet genau wie "EXIST", bezieht sich
aber auf den Namen einer Umgebungsvariablen und ist wahr, wenn
die Umgebungsvariable definiert ist.
Der Ausdruck "%ERRORLEVEL%" wird zu einer Zeichendarstellung
des aktuellen Werts der Variablen "ERRORLEVEL" expandiert (voraus-
gesetzt, es ist nicht bereits eine Umgebungsvariable mit dem Namen
"ERRORLEVEL" vorhanden, deren Wert dann zurückgegeben würde).
Nachdem ein Programm ausgeführt wurde, gestaltet sich die Verwendung
von "ERRORLEVEL" wie folgt:
goto Antwort%ERRORLEVEL%
:Antwort0
echo J für Ja eingegeben
:Antwort1
echo N für Nein eingegeben
Auch die oben aufgeführten numerischen
Vergleiche können verwendet werden:
IF %ERRORLEVEL% LEQ 1 goto ok
Der Ausdruck "%CMDCMDLINE%" wird zu der ursprünglichen Befehls-
zeile expandiert, die "CMD.EXE" vor einer beliebigen Bearbeitung übergeben
wird (vorausgesetzt, es ist nicht bereits eine Umgebungsvariable mit dem
Namen "CMDCMDLINE" vorhanden, deren Wert dann zurückgegeben
würde).
Der Ausdruck "%CMDEXTVERSION%" wird zu einer Zeichendarstellung
des aktuellen Werts der Variablen "CMDEXTVERSION" expandiert (voraus-
gesetzt, es ist nicht bereits eine Umgebungsvariable mit dem Namen
"CMDEXTVERSION" vorhanden, deren Wert dann zurückgegeben würde).
Hinterlasse einen Kommentar
Du musst angemeldet sein, um einen Kommentar schreiben zu können.