if

Esegue un'elaborazione condizionale nei programmi batch.

Sintassi

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

Se sono abilitate le estensioni dei comandi, utilizzare la sintassi seguente:

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

Parametri

Parametro Descrizione
not Specifica che il comando deve essere effettuato solo se la condizione è false.
Errorlevel <number> Specifica una condizione vera solo se il programma precedente eseguito da Cmd.exe ha restituito un codice di uscita uguale o maggiore di un numero.
<command> Specifica il comando che deve essere eseguito se viene soddisfatta la condizione precedente.
<string1>==<string2> Specifica una condizione true solo se string1 e string2 sono uguali. Questi valori possono essere stringhe letterali o variabili batch (ad esempio, %1). Non è necessario racchiuderlo tra virgolette stringhe letterali.
esistere <filename> Specifica una condizione true se il nome file specificato esiste.
<compareop> Specifica un operatore di confronto di tre lettere, tra cui:
  • EQU - Uguale a
  • NEQ - Diverso da
  • LSS - Minore di
  • LEQ - Minore o uguale a
  • GTR - Maggiore di
  • GEQ - Maggiore o uguale a
/i Forza confronti per ignorare la distinzione tra stringhe. È possibile usare /i nel string1==string2 formato se. Questi confronti sono generici, in quanto se string1 e string2 sono costituiti solo da cifre numeriche, le stringhe vengono convertite in numeri e viene eseguito un confronto numerico.
cmdextversion <number> Specifica di una condizione true soltanto se il numero di versione interno associato alle estensioni di comando di Cmd.exe è uguale a o maggiore del numero specificato. La prima versione è 1. Aumenta in modo incrementale uno quando vengono aggiunti miglioramenti significativi alle estensioni del comando. Il cmdextversion condizionale è mai true quando comando le estensioni sono disabilitate (per impostazione predefinita, comando estensioni sono abilitate).
defined <variable> Specifica una condizione true se la variabile è definita.
<expression> Specifica una riga di comando e i parametri da passare al comando in un else clausola.
/? Visualizza la guida al prompt dei comandi.

Osservazioni:

  • Se la condizione specificata in una clausola if è true, viene eseguito il comando che segue la condizione. Se la condizione è false, il comando nella clausola if viene ignorato e il comando esegue qualsiasi comando specificato nella clausola else .

  • Quando si arresta un programma, viene restituito un codice di uscita. Per usare i codici di uscita come condizioni, usare il parametro errorlevel .

  • Se si utilizza definito, le seguenti tre variabili vengono aggiunte all'ambiente: % errorlevel %, % cmdcmdline %, e % cmdextversion %.

    • %errorlevel%: si espande in una rappresentazione di stringa del valore corrente della variabile di ambiente ERRORLEVEL. Questa variabile presuppone che non esista già una variabile di ambiente esistente con il nome ERRORLEVEL. Se è presente, si otterrà invece il valore ERRORLEVEL.

    • %cmdcmdline%: si espande nella riga di comando originale passata a Cmd.exe prima di qualsiasi elaborazione da Cmd.exe. Si presuppone che non esista già una variabile di ambiente esistente con il nome CMDCMDLINE. In caso affermativo, si otterrà invece il valore CMDCMDLINE.

    • %cmdextversion%: si espande nella rappresentazione di stringa del valore corrente di cmdextversion. Ciò presuppone che non esista già una variabile di ambiente esistente con il nome CMDEXTVERSION. In caso affermativo, si otterrà invece il valore CMDEXTVERSION.

  • È necessario utilizzare il else clausola nella stessa riga di comando dopo il Se.

Esempi

Per visualizzare il messaggio Impossibile trovare il file di dati se non è possibile trovare il file Product.dat, digitare:

if not exist product.dat echo Cannot find data file

Per formattare un disco nell'unità e visualizzare un messaggio di errore se si verifica un errore durante il processo di formattazione, digitare le righe seguenti in un file batch:

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

Per eliminare il file di prodotto. dat dalla directory corrente o visualizzare un messaggio se non viene trovato prodotto. dat, digitare le righe seguenti in un file batch:

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

Nota

Queste righe possono essere combinate in una singola riga, come indicato di seguito:

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

Per visualizzare il valore della variabile di ambiente ERRORLEVEL dopo l'esecuzione di un file batch, digitare le righe seguenti nel file batch:

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!

Per passare all'etichetta ok se il valore della variabile di ambiente ERRORLEVEL è minore o uguale a 1, digitare:

if %errorlevel% LEQ 1 goto okay