Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Utför villkorsstyrd bearbetning i batchprogram.
Syntax
if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]
Om kommandotillägg är aktiverade använder du följande syntax:
if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if cmdextversion <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]
Parameterar
Parameter | Beskrivning |
---|---|
inte | Anger att kommandot endast ska utföras om villkoret är falskt. |
felnivå <number> |
Anger endast ett sant villkor om det tidigare programmet som kördes av Cmd.exe returnerade en slutkod som är lika med eller större än tal. |
<command> |
Anger det kommando som ska utföras om föregående villkor uppfylls. |
<string1>==<string2> |
Anger endast ett sant villkor om string1 och string2 är desamma. Dessa värden kan vara literalsträngar eller batchvariabler (till exempel %1 ). Du behöver inte omsluta literalsträngar inom citattecken. |
finns <filename> |
Anger ett sant villkor om det angivna filnamnet finns. |
<compareop> |
Anger en jämförelseoperator med tre bokstäver, inklusive:
|
/jag | Tvingar strängjämförelser att ignorera skiftläge. Du kan använda /i i string1==string2 form av om. Dessa jämförelser är allmänna, eftersom om både string1 och string2 endast består av numeriska siffror konverteras strängarna till tal och en numerisk jämförelse utförs. |
cmdextversion <number> |
Anger endast ett sant villkor om det interna versionsnumret som är associerat med kommandotilläggsfunktionen i Cmd.exe är lika med eller större än det angivna talet. Den första versionen är 1. Den ökar med steg om en när betydande förbättringar läggs till i kommandotilläggen. cmdextversion villkorsstyrd är aldrig sant när kommandotillägg är inaktiverade (som standard är kommandotillägg aktiverade). |
definierad <variable> |
Anger ett sant villkor om variabel har definierats. |
<expression> |
Anger ett kommandoradskommando och eventuella parametrar som ska skickas till kommandot i en else-sats. |
/? | Visar hjälp i kommandotolken. |
Anmärkningar
Om villkoret som anges i en om-satsen är sant utförs kommandot som följer villkoret. Om villkoret är falskt kommandot om-satsen ignoreras och kommandot kör alla kommandon som anges i annars-satsen.
När ett program stoppas returneras en slutkod. Om du vill använda slutkoder som villkor använder du parametern errorlevel.
Om du använder definieradeläggs följande tre variabler till i miljön: %errorlevel%, %cmdcmdline%och %cmdextversion%.
%errorlevel%: Expanderar till en strängrepresentation av det aktuella värdet för miljövariabeln ERRORLEVEL. Den här variabeln förutsätter att det inte redan finns en befintlig miljövariabel med namnet ERRORLEVEL. Om det finns det får du värdet ERRORLEVEL i stället.
%cmdcmdline%: Expanderar till den ursprungliga kommandoraden som skickades till Cmd.exe före bearbetning av Cmd.exe. Detta förutsätter att det inte redan finns en befintlig miljövariabel med namnet CMDCMDLINE. Om det finns det får du det CMDCMDLINE-värdet i stället.
%cmdextversion%: Expanderar till strängrepresentationen av det aktuella värdet för cmdextversion. Detta förutsätter att det inte redan finns en befintlig miljövariabel med namnet CMDEXTVERSION. Om det finns det får du det CMDEXTVERSION-värdet i stället.
Du måste använda satsen else på samma rad som kommandot efter om.
Exempel
Om du vill visa meddelandet Det går inte att hitta datafilen om filen Product.dat inte kan hittasskriver du:
if not exist product.dat echo Cannot find data file
Om du vill formatera en disk i enhet A och visa ett felmeddelande om ett fel inträffar under formateringsprocessen skriver du följande rader i en batchfil:
:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.
Om du vill ta bort filen Product.dat från den aktuella katalogen eller visa ett meddelande om Product.dat inte hittas skriver du följande rader i en batchfil:
IF EXIST Product.dat (
del Product.dat
) ELSE (
echo The Product.dat file is missing.
)
Anmärkning
Dessa linjer kan kombineras till en enda rad på följande sätt:
IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)
Om du vill upprepa värdet för miljövariabeln ERRORLEVEL när du har kört en batchfil skriver du följande rader i batchfilen:
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!
Om du vill gå till etiketten okej om värdet för miljövariabeln ERRORLEVEL är mindre än eller lika med 1 skriver du:
if %errorlevel% LEQ 1 goto okay