batch-file
Se affermazioni
Ricerca…
Sintassi
if [/ i] StringToCompare1 == StringToCompare2 (commandA) else (commandB)
if errorlevel 1 (commandA) else (commandB)
if% errorlevel% == 1 (commandA) else (commandB)
se esiste Nome file (comandoA) altro (comandoB)
se definito VariableName (commandA) else (commandB)
Osservazioni
Ci sono alcune sintassi tra cui scegliere in un'istruzione if
. Useremo if string1==string2
come esempio.
Sintassi a 1 linea
-
if string1==string2 commandA
-
if string1==string2 (commandA)
-
if string1==string2 (commandA) else (commandB)
-
if string1==string2 (commandA) else commandB
-
if string1==string2 (commandA)else (commandB)
-
if string1==string2 (commandA)else commandB
Sintassi multilinea
if string1==string2 (
commandA
)
O
if string1==string2 (
commandA
) else (
commandB
)
Sono ancora disponibili alcune sintassi aggiuntive.
Confronto dei numeri con la dichiarazione IF
SET TEST=0
IF %TEST% == 0 (
echo TEST FAILED
) ELSE IF %TEST% == 1 (
echo TEST PASSED
) ELSE (
echo TEST INVALID
)
Confronto tra stringhe
IF "%~1" == "-help" (
ECHO "Hello"
)
dove %1
riferisce al primo argomento della riga di comando e ~
rimuove tutte le virgolette che sono state incluse quando è stato chiamato lo script.
Confronto di Errorlevel
If Errorlevel 1 (
Echo Errorlevel is 1 or higher
REM The phrase "1 or higher" is used because If Errorlevel 1 statement means:
REM If %Errorlevel% GEQ 1
REM Not If %Errorlevel% EQU 1
)
o
If "%Errorlevel%"=="1" (
Echo Errorlevel is 1
)
Lo script sopra controllerebbe la variabile Errorlevel (built-in). L'operatore not
può essere usato.
Set "Test=%Errorlevel%"
If "%Test%" == "1" (
Echo Errorlevel is 1
)
Anche questo funziona.
Si noti che alcuni comandi non influiscono sul livello di errore :
- Rompere
- Eco
- endlocal
- Per
- Se
- Pausa
- Rem
- Rd / Rmdir
- Impostato
- Titolo
I seguenti comandi impostano ma non cancellano errorlevel :
- Cls
- Vai a
- chiavi
- popd
- Cambio
I seguenti comandi impostano i codici di uscita ma non il livello di errore :
- Rd / Rmdir
I seguenti comandi impostano errorlevel ma non i codici di uscita :
- MD / Mkdir
Controlla se il file esiste
If exist "C:\Foo\Bar.baz" (
Echo File exist
)
Questo controlla se l'esistenza del file C: \ Foo \ Bar.baz. Se questo esiste, echos File esiste Anche l'operatore Not
può essere aggiunto.
Se la variabile esiste / imposta
If Defined Foo (
Echo Foo is defined
)
Questo controllerebbe se una variabile è definita o meno. Di nuovo, può essere usato l'operatore Not
.