Condividi tramite


if

Esegue l'elaborazione condizionale nei programmi batch.

Syntax

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>]

Parameters

Parameter Description
not Specifica che il comando deve essere eseguito solo se la condizione è false.
livello di errore <number> Specifica una condizione true solo se il programma precedente eseguito da Cmd.exe ha restituito un codice di uscita uguale o superiore a number.
<command> Specifica il comando che deve essere eseguito se viene soddisfatta la condizione precedente.
<string1>==<string2> Specifica una condizione true solo se stringa1 e stringa2 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 utilizzare /i nel string1==string2 formato di if. Questi confronti sono generici, in quanto se sia stringa1 che stringa2 sono costituite 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. La condizione cmdextversion non è mai true quando le estensioni dei comandi sono disabilitate (per impostazione predefinita, le estensioni dei comandi sono abilitate).
<variable> definiti Specifica una condizione vera se la variabile è definita.
<expression> Specifica un comando della riga di comando e tutti i parametri da passare al comando in una clausola else .
/? Visualizza la Guida al prompt dei comandi.

Remarks

  • 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 un programma si arresta, restituisce un codice di uscita. Per utilizzare i codici di uscita come condizioni, utilizzare il parametro errorlevel .

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

    • %errorlevel%: Si espande in una rappresentazione in stringa del valore corrente della variabile d'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 che è stata passata a Cmd.exe prima di qualsiasi elaborazione da parte 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 in 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 la clausola else sulla stessa riga del comando dopo if.

Examples

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.
)

Note

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