Delen via


if

Voert voorwaardelijke verwerking uit in batchprogramma's.

Syntax

if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]

Als opdrachtextensies zijn ingeschakeld, gebruikt u de volgende syntaxis:

if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if cmdextversion <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]

Parameters

Parameter Description
not Hiermee geeft u op dat de opdracht alleen moet worden uitgevoerd als de voorwaarde onwaar is.
foutniveau <number> Hiermee wordt alleen een ware voorwaarde opgegeven als het vorige programma dat door Cmd.exe werd uitgevoerd, een afsluitcode heeft geretourneerd die gelijk is aan of groter is dan getal.
<command> Hiermee geeft u de opdracht die moet worden uitgevoerd als aan de voorgaande voorwaarde wordt voldaan.
<string1>==<string2> Hiermee wordt alleen een ware voorwaarde opgegeven als string1 en string2 hetzelfde zijn. Deze waarden kunnen letterlijke tekenreeksen of batchvariabelen zijn (bijvoorbeeld %1). U hoeft letterlijke tekenreeksen niet tussen aanhalingstekens te plaatsen.
bestaan <filename> Hiermee geeft u een voorwaarde waar als de opgegeven bestandsnaam bestaat.
<compareop> Hiermee geeft u een vergelijkingsoperator met drie letters op, waaronder:
  • EQU - Gelijk aan
  • NEQ - Niet gelijk aan
  • LSS - Minder dan
  • LEQ - Kleiner dan of gelijk aan
  • GTR - Groter dan
  • GEQ - Groter dan of gelijk aan
/i Dwingt tekenreeksvergelijkingen af om hoofdletters te negeren. U kunt /i gebruiken op de string1==string2 vorm van if. Deze vergelijkingen zijn generiek, in die zin dat als zowel string1 als string2 alleen uit numerieke cijfers bestaan, de strings worden geconverteerd naar getallen en een numerieke vergelijking wordt uitgevoerd.
cmdextversie <number> Hiermee geeft u alleen een voorwaarde waar als het interne versienummer dat is gekoppeld aan de opdrachtuitbreidingsfunctie van Cmd.exe gelijk is aan of groter is dan het opgegeven getal. De eerste versie is 1. Het neemt toe met stappen van één wanneer belangrijke verbeteringen worden toegevoegd aan de opdrachtextensies. De voorwaardelijke cmdextversion is nooit waar wanneer opdrachtextensies zijn uitgeschakeld (opdrachtextensies zijn standaard ingeschakeld).
gedefinieerde <variable> Specificeert een ware voorwaarde als de variabele is gedefinieerd.
<expression> Specificeert een opdrachtregelopdracht en alle parameters die aan de opdracht moeten worden doorgegeven in een else-clausule .
/? Geeft help weer bij de opdrachtprompt.

Remarks

  • Als de voorwaarde die is opgegeven in een if-clausule waar is, wordt de opdracht die op de voorwaarde volgt, uitgevoerd. Als de voorwaarde onwaar is, wordt de opdracht in de if-clausule genegeerd en voert de opdracht elke opdracht uit die is opgegeven in de else-clausule .

  • Wanneer een programma stopt, wordt er een afsluitcode geretourneerd. Als u afsluitcodes als voorwaarden wilt gebruiken, gebruikt u de parameter errorlevel .

  • Als u gedefinieerd gebruikt, worden de volgende drie variabelen aan de omgeving toegevoegd: %errorlevel%, %cmdcmdline%en %cmdextversion%.

    • %errorlevel%: Breidt zich uit tot een tekenreeksweergave van de huidige waarde van de omgevingsvariabele ERRORLEVEL. Bij deze variabele wordt ervan uitgegaan dat er nog geen bestaande omgevingsvariabele is met de naam ERRORLEVEL. Als dat zo is, krijgt u in plaats daarvan de waarde ERRORLEVEL.

    • %cmdcmdline%: Breidt uit naar de oorspronkelijke opdrachtregel die aan Cmd.exe is doorgegeven voordat deze door Cmd.exewerd verwerkt. Hierbij wordt ervan uitgegaan dat er nog geen bestaande omgevingsvariabele is met de naam CMDCMDLINE. Als dat zo is, krijgt u in plaats daarvan de CMDCMDLINE-waarde.

    • %cmdextversion%: Breidt zich uit naar de stringweergave van de huidige waarde van cmdextversion. Hierbij wordt ervan uitgegaan dat er nog geen bestaande omgevingsvariabele is met de naam CMDEXTVERSION. Als dat zo is, krijgt u in plaats daarvan de CMDEXTVERSION-waarde.

  • U moet de else-clausule op dezelfde regel gebruiken als het commando na de if.

Examples

Als u het bericht wilt weergeven Kan gegevensbestand niet vinden als het bestand Product.dat niet kan worden gevonden, typt u:

if not exist product.dat echo Cannot find data file

Als u een schijf in station A wilt formatteren en een foutbericht wilt weergeven als er een fout optreedt tijdens het opmaakproces, typt u de volgende regels in een batchbestand:

:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.

Als u het bestand Product.dat uit de huidige map wilt verwijderen of een bericht wilt weergeven als Product.dat niet is gevonden, typt u de volgende regels in een batchbestand:

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

Note

Deze regels kunnen als volgt worden gecombineerd tot één regel:

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

Als u de waarde van de omgevingsvariabele ERRORLEVEL wilt echoën nadat u een batchbestand hebt uitgevoerd, typt u de volgende regels in het batchbestand:

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!

Als u naar het ok-label wilt gaan als de waarde van de omgevingsvariabele ERRORLEVEL kleiner is dan of gelijk is aan 1, typt u:

if %errorlevel% LEQ 1 goto okay