Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führt bedingte Verarbeitung in Batchprogrammen durch.
Syntax
if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]
Wenn Befehlserweiterungen aktiviert sind, verwenden Sie die folgende Syntax:
if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if cmdextversion <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]
Die Parameter
Parameter | BESCHREIBUNG |
---|---|
nicht | Gibt an, dass der Befehl nur ausgeführt werden soll, wenn die Bedingung falsch ist. |
fehlerstufe <number> |
Gibt eine echte Bedingung nur an, wenn das vorherige Programm, das von Cmd.exe ausgeführt wird, einen Ausgangscode zurückgegeben hat, der gleich oder größer als Zahlist. |
<command> |
Gibt den Befehl an, der ausgeführt werden soll, wenn die vorherige Bedingung erfüllt ist. |
<string1>==<string2> |
Gibt eine true-Bedingung nur an, wenn Zeichenfolge1 und Zeichenfolge2- identisch sind. Diese Werte können Literalzeichenfolgen oder Batchvariablen sein (z. B. %1 ). Sie müssen keine Literalzeichenfolgen in Anführungszeichen setzen. |
vorhanden <filename> |
Gibt eine true-Bedingung an, wenn der angegebene Dateiname vorhanden ist. |
<compareop> |
Gibt einen Drei-Buchstaben-Vergleichsoperator an, einschließlich:
|
/Ich | Erzwingt Zeichenfolgenvergleiche, um die Groß-/Kleinschreibung zu ignorieren. Sie können /i auf der string1==string2 Form von verwenden, wenn. Diese Vergleiche sind generisch, wenn sowohl Zeichenfolge1 als auch Zeichenfolge2 nur aus numerischen Ziffern bestehen, werden die Zeichenfolgen in Zahlen konvertiert und ein numerischer Vergleich durchgeführt. |
cmdextversion <number> |
Gibt eine echte Bedingung nur an, wenn die interne Versionsnummer, die dem Befehlserweiterungsfeature von Cmd.exe zugeordnet ist, gleich oder größer als die angegebene Zahl ist. Die erste Version ist 1. Sie erhöht sich um einen Schritt, wenn den Befehlserweiterungen erhebliche Verbesserungen hinzugefügt werden. Die cmdextversion bedingungsbedingt ist nie wahr, wenn Befehlserweiterungen deaktiviert sind (standardmäßig sind Befehlserweiterungen aktiviert). |
definierte <variable> |
Gibt eine true-Bedingung an, wenn Variable definiert ist. |
<expression> |
Gibt einen Befehlszeilenbefehl und alle Parameter an, die an den Befehl in einer else Klausel übergeben werden sollen. |
/? | Zeigt hilfe an der Eingabeaufforderung an. |
Bemerkungen
Wenn die in einer angegebene Bedingung, wenn Klausel wahr ist, wird der Befehl, der auf die Bedingung folgt, ausgeführt. Wenn die Bedingung falsch ist, wird der Befehl in der , wenn Klausel ignoriert wird, und der Befehl führt alle Befehle aus, die in der else Klausel angegeben sind.
Wenn ein Programm beendet wird, wird ein Ausgangscode zurückgegeben. Um Exitcodes als Bedingungen zu verwenden, verwenden Sie den fehlerlevel Parameter.
Wenn Sie definiertenverwenden, werden der Umgebung die folgenden drei Variablen hinzugefügt: %errorlevel%, %cmdcmdline%und %cmdextversion%.
%errorlevel%: Erweitert sich in eine Zeichenfolgendarstellung des aktuellen Werts der ERRORLEVEL-Umgebungsvariable. Diese Variable geht davon aus, dass noch keine Umgebungsvariable mit dem Namen ERRORLEVEL vorhanden ist. Falls vorhanden, erhalten Sie stattdessen diesen ERRORLEVEL-Wert.
%cmdcmdline%: Erweitert die ursprüngliche Befehlszeile, die vor der Verarbeitung durch Cmd.exean Cmd.exe übergeben wurde. Dabei wird davon ausgegangen, dass noch keine Umgebungsvariable mit dem Namen CMDCMDLINE vorhanden ist. Falls vorhanden, erhalten Sie stattdessen diesen CMDCMDLINE-Wert.
%cmdextversion%: Erweitert die Zeichenfolgendarstellung des aktuellen Werts von cmdextversion. Dabei wird davon ausgegangen, dass noch keine Umgebungsvariable mit dem Namen CMDEXTVERSION vorhanden ist. Falls vorhanden, erhalten Sie stattdessen diesen CMDEXTVERSION-Wert.
Sie müssen die anderen Klausel in derselben Zeile wie der Befehl nach dem verwenden, wenn.
Beispiele
Um die Meldung anzuzeigen, Die Datendatei kann nicht gefunden werden, wenn die Datei Product.dat nicht gefunden werden kann, geben Sie Folgendes ein:
if not exist product.dat echo Cannot find data file
Um einen Datenträger auf Laufwerk A zu formatieren und eine Fehlermeldung anzuzeigen, wenn während des Formatierungsprozesses ein Fehler auftritt, geben Sie die folgenden Zeilen in eine Batchdatei ein:
:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.
Um die Datei Product.dat aus dem aktuellen Verzeichnis zu löschen oder eine Meldung anzuzeigen, wenn Product.dat nicht gefunden wird, geben Sie die folgenden Zeilen in eine Batchdatei ein:
IF EXIST Product.dat (
del Product.dat
) ELSE (
echo The Product.dat file is missing.
)
Hinweis
Diese Zeilen können wie folgt in eine einzelne Zeile kombiniert werden:
IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)
Geben Sie die folgenden Zeilen in die Batchdatei ein, um den Wert der ERRORLEVEL-Umgebungsvariable nach dem Ausführen einer Batchdatei wiederzugeben:
goto answer%errorlevel%
:answer1
echo The program returned error level 1
goto end
:answer0
echo The program returned error level 0
goto end
:end
echo Done!
Wenn der Wert der ERRORLEVEL-Umgebungsvariable kleiner oder gleich 1 ist, geben Sie Folgendes ein, um zur Okay-Bezeichnung zu wechseln:
if %errorlevel% LEQ 1 goto okay