Comando cmd IF

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 >