Esegue un'elaborazione condizionale in programmi batch.
IF [NOT] ERRORLEVEL numero comando
IF [NOT] stringa1==stringa2 comando
IF [NOT] EXIST nomefile comando
NOT Specifica che Windows dovrebbe eseguire il comando solo se la condizione è falsa.
ERRORLEVEL numero Specifica una condizione vera se l'ultimo programma eseguito ha restituito un codice di uscita uguale o maggiore del numero specificato.
stringa1==stringa2 Specifica una condizione vera se le stringhe di testo specificate corrispondono.
EXIST nomefile Specifica una condizione vera se il nomefile specificato esiste.
comando Specifica il comando da eseguire se la condizione è soddisfatta. Il comando può essere seguito dal comando ELSE che eseguirà il comando dopo la parola chiave ELSE se la condizione specificata è FALSE
La clausola ELSE deve essere indicata nella stessa riga del comando dopo IF. Per esempio:
IF EXIST nomefile. (
del nomefile.
) ELSE (
echo nomefile. mancante.)
La situazione seguente NON funziona perché il comando del deve essere terminato con una nuova riga:
IF EXIST nomefile. del nomefile. ELSE echo nomefile. mancante
Neanche in questo caso funziona. Il comando ELSE deve essere sulla stessa riga della fine del comando IF:
IF EXIST nomefile. del nomefile.
ELSE echo nomefile. mancante
Questa situazione funziona se si desidera tutto su una riga:
IF EXIST nomefile. (del nomefile.) ELSE echo nomefile. mancante
Se le estensioni dei comandi sono abilitate, l'istruzione IF verrà modificata come segue:
IF [/I] stringa1 op_confr stringa2 comando
IF CMDEXTVERSION numero comando
IF DEFINED variabile comando
Dove op_confr può essere uno degli operatori seguenti:
EQU - Uguale
NEQ - Diverso
LSS - Minore di
LEQ - Minore o uguale a
GTR - Maggiore di
GEQ - Maggiore o uguale a
L'opzione /I, se specificata, indica che nel confronto non deve essere fatta distinzione tra maiuscole e minuscole. L'opzione /I può essere utilizzata anche nelle istruzioni IF con formato stringa1==stringa2. Tali confronti sono generici. Infatti, se i parametri stringa1 e stringa2 contengono solo caratteri numerici, verranno convertiti in numeri e verrà eseguito un confronto numerico.
La condizione CMDEXTVERSION è simile a ERRORLEVEL, ma il confronto viene eseguito rispetto a un numero di versione interno associato alle estensioni dei comandi. La prima versione è 1 e viene incrementata di un'unità quando vengono aggiunti miglioramenti significativi alle estensioni dei comandi. Se le estensioni dei comandi sono disabilitate, la condizione CMDEXTVERSION non restituisce mai true.
La condizione DEFINED è simile a EXIST ma, a differenza di questa, accetta una variabile di ambiente e restituisce true se tale variabile è definita.
La variabile %ERRORLEVEL% viene sostituita dal valore corrente di ERRORLEVEL rappresentato come stringa, purché non sia già presente una variabile di ambiente con il nome ERRORLEVEL. In tale caso verrà restituito il valore di quest'ultima. Di seguito viene illustrato l'utilizzo di ERRORLEVEL dopo l'esecuzione di un programma:
goto answer%ERRORLEVEL%
:answer0
echo Il programma ha restituito il codice 0
:answer1
echo Il programma ha restituito il codice 1
È possibile utilizzare anche i confronti numerici precedenti:
IF %ERRORLEVEL% LEQ 1 goto okay
La variabile %CMDCMDLINE% viene sostituita dalla riga di comando originale passata a CMD.EXE prima di qualsiasi elaborazione da parte di CMD.EXE, purché non sia già presente una variabile con il nome CMDCMDLINE. In tal caso verrà restituito il valore di quest'ultima.
La variabile %CMDEXTVERSION% viene sostituita dal valore corrente di CMDEXTVERSION rappresentato come stringa, purché non sia già presente una variabile di ambiente con il nome CMDEXTVERSION. In tal caso verrà restituito il valore di quest'ultima.
elenco comandi dos >