Freigeben über


if

Führt eine 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 die 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>]

Parameter

Parameter BESCHREIBUNG
not Gibt an, dass der Befehl nur ausgeführt werden soll, wenn die Bedingung falsch ist.
errorlevel <number> Gibt nur dann eine true-Bedingung an, wenn das zuvor von Cmd.exe ausgeführte Programm einen Exit-Code gleich oder größer als Zahl zurückgegeben hat.
<command> Gibt den Befehl an, der ausgeführt werden soll, wenn die vorhergehende Bedingung erfüllt ist.
<string1>==<string2> Gibt eine true-Bedingung nur an, wenn string1 und string2 identisch sind. Diese Werte können Zeichenketten oder Batchvariablen sein (z. B. %1). Sie müssen wörtliche Zeichenfolgen nicht in Anführungszeichen einschließen.
exist <filename> Gibt eine true-Bedingung an, wenn der angegebene Dateiname existiert.
<compareop> Gibt einen Vergleichsoperator mit drei Buchstaben an, einschließlich:
  • EQU - Ist gleich mit
  • NEQ - Nicht gleich mit
  • LSS - Weniger als
  • LEQ - Weniger als oder gleich
  • GTR - Größer als
  • GEQ - Größer als oder gleich
/i Erzwingt Zeichenfolgenvergleiche, die Groß- und Kleinschreibung zu ignorieren. Sie können /i in der string1==string2-Form von if verwenden. Diese Vergleiche sind generisch, d.h. wenn sowohl string1 als auch string2 ausschließlich aus numerischen Ziffern bestehen, werden die Strings in Zahlen umgewandelt und ein numerischer Vergleich wird durchgeführt.
cmdextversion <number> Gibt nur dann eine true-Bedingung an, wenn die interne Versionsnummer, die mit der Befehlserweiterungsfunktion von Cmd.exe verbunden ist, gleich oder größer als die angegebene Zahl ist. Die erste Version ist 1. Sie steigt in Schritten von eins, wenn die Befehlserweiterungen erheblich erweitert werden. Die Bedingung cmdextversion ist nie true, wenn die Befehlserweiterungen deaktiviert sind (standardmäßig sind die Befehlserweiterungen aktiviert).
defined <variable> Gibt eine true-Bedingung an, wenn variable definiert ist.
<expression> Gibt einen Befehlszeilenbefehl und alle Parameter an, die in einer else-Klausel an den Befehl übergeben werden sollen.
/? Zeigt die Hilfe an der Eingabeaufforderung an.

Bemerkungen

  • Wenn die in einer if-Klausel angegebene Bedingung wahr ist, wird der Befehl, der auf die Bedingung folgt, durchgeführt. Ist die Bedingung falsch, wird der Befehl in der if-Klausel ignoriert und der Befehl führt einen beliebigen Befehl aus, der in der else-Klausel angegeben ist.

  • Wenn ein Programm beendet wird, wird ein Exitcode zurückgegeben. Verwenden Sie den errorlevel-Parameter, um Exitcodes als Bedingungen zu verwenden.

  • Wenn Sie defined verwenden, werden der Umgebung die folgenden drei Variablen hinzugefügt: %errorlevel%, %cmdcmdline% und %cmdextversion%.

    • %errorlevel%: Erweitert sich zu einer Zeichenfolgendarstellung des aktuellen Wertes der Umgebungsvariablen ERRORLEVEL. Diese Variable setzt voraus, dass es nicht bereits eine Umgebungsvariable mit dem Namen ERRORLEVEL gibt. Wenn dies der Fall ist, erhalten Sie stattdessen diesen ERRORLEVEL-Wert.

    • %cmdcmdline%: Erweitert sich in die ursprüngliche Befehlszeile, die an Cmd.exe vor der Verarbeitung durch Cmd.exe übergeben wurde. Das setzt voraus, dass es nicht bereits eine Umgebungsvariable mit dem Namen CMDCMDLINE gibt. Ist dies der Fall, erhalten Sie stattdessen den CMDCMDLINE-Wert.

    • %cmdextversion%: Erweitert sich in die Zeichenfolgendarstellung des aktuellen Wertes von cmdextversion. Das setzt voraus, dass es nicht bereits eine Umgebungsvariable mit dem Namen CMDEXTVERSION gibt. Wenn dies der Fall ist, erhalten Sie stattdessen diesen CMDEXTVERSION-Wert.

  • Sie müssen die else-Klausel in derselben Zeile wie der Befehl nach dem if verwenden.

Beispiele

Um die Meldung Kann die Datendatei nicht finden, wenn die Datei Product.dat nicht gefunden werden kann anzuzeigen, geben Sie Folgendes ein:

if not exist product.dat echo Cannot find data file

Um ein Laufwerk in Laufwerk A zu formatieren und eine Fehlermeldung anzuzeigen, wenn während des Formatierungsvorgangs 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 entfernen 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 lassen sich wie folgt zu einer einzigen Zeile zusammenfassen:

IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)

Um den Wert der Umgebungsvariablen ERRORLEVEL nach der Ausführung einer Batchdatei auszugeben, geben Sie die folgenden Zeilen in die Batchdatei ein:

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!

Um zum Label „okay“ zu gelangen, wenn der Wert der Umgebungsvariablen ERRORLEVEL kleiner oder gleich 1 ist, geben Sie Folgendes ein:

if %errorlevel% LEQ 1 goto okay