Condividi tramite


if

Esegue l'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 le estensioni dei comandi sono abilitate, usare 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
non Specifica che il comando deve essere eseguito solo se la condizione è false.
errorlevel <number> Specifica una condizione true solo se il programma precedente eseguito da Cmd.exe restituito un codice di uscita uguale o maggiore di 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 racchiudere le stringhe letterali tra virgolette.
esiste <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 i confronti di stringhe a ignorare la distinzione tra maiuscole e minuscole. È possibile usare /i nel formato string1==string2 di se. Questi confronti sono generici, in quanto se sia string1 che string2 sono costituiti solo da cifre numeriche, le stringhe vengono convertite in numeri e viene eseguito un confronto numerico.
cmdextversion <number> Specifica una condizione true solo se il numero di versione interno associato alla funzionalità delle estensioni del comando di Cmd.exe è uguale o maggiore del numero specificato. La prima versione è 1. Aumenta con incrementi di uno quando vengono aggiunti miglioramenti significativi alle estensioni dei comandi. Il cmdextversion condizionale non è mai true quando le estensioni dei comandi sono disabilitate (per impostazione predefinita, le estensioni dei comandi sono abilitate).
<variable> definiti Specifica una condizione true se viene definita variabile.
<expression> Specifica un comando della riga di comando ed eventuali parametri da passare al comando in una clausola else.
/? Visualizza la Guida al prompt dei comandi.

Osservazioni:

  • Se la condizione specificata in un se clausola è true, viene eseguito il comando che segue la condizione. Se la condizione è false, il comando nel se clausola viene ignorata e il comando esegue qualsiasi comando specificato nella clausola else.

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

  • Se si usa definito, all'ambiente vengono aggiunte le tre variabili seguenti: %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 parte di 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 usare la clausola else nella stessa riga del 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à A 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 Product.dat dalla directory corrente o visualizzare un messaggio se Product.dat non viene trovato, 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 ripetere 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