Script batch - Istruzione If / else

La successiva dichiarazione decisionale è la dichiarazione If / else. Di seguito è la forma generale di questa dichiarazione.

If (condition) (do_something) ELSE (do_something_else)

Il funzionamento generale di questa istruzione è che prima una condizione viene valutata nell'istruzione "if". Se la condizione è vera, esegue le istruzioni successive e si ferma prima della condizione else ed esce dal ciclo. Se la condizione è falsa, esegue le istruzioni nel blocco di istruzioni else e quindi esce dal ciclo. Il diagramma seguente mostra il flusso dell'istruzione "if".

Controllo delle variabili

Proprio come l'istruzione "if" in Batch Script, anche if-else può essere utilizzato per controllare le variabili impostate nello stesso Batch Script. La valutazione dell'istruzione "if" può essere eseguita sia per le stringhe che per i numeri.

Controllo delle variabili intere

L'esempio seguente mostra come utilizzare l'istruzione "if" per i numeri.

Example

@echo off 
SET /A a = 5 
SET /A b = 10
SET /A c = %a% + %b% 
if %c%==15 (echo "The value of variable c is 15") else (echo "Unknown value") 
if %c%==10 (echo "The value of variable c is 10") else (echo "Unknown value")

La cosa fondamentale da notare sul programma di cui sopra è:

  • Ogni codice "if else" viene inserito tra parentesi (). Se le parentesi non vengono posizionate per separare il codice per il codice "if and else", le istruzioni non sarebbero valide per le istruzioni if ​​else.

  • Nella prima istruzione "if else", la condizione if restituisce true.

  • Nella seconda istruzione "if else", la condizione else verrà eseguita poiché i criteri sarebbero valutati come falsi.

Output

Il comando precedente produce il seguente output.

"The value of variable c is 15" 
"Unknown value"

Controllo delle variabili stringa

Lo stesso esempio può essere ripetuto per le stringhe. L'esempio seguente mostra come utilizzare l'istruzione "if else" per le stringhe.

Example

@echo off 
SET str1 = String1 
SET str2 = String2 

if %str1%==String1 (echo "The value of variable String1") else (echo "Unknown value") 
if %str2%==String3 (echo "The value of variable c is String3") else (echo "Unknown value")

La cosa fondamentale da notare sul programma di cui sopra è:

  • La prima istruzione "if" controlla se il valore della variabile str1 contiene la stringa "String1". In tal caso, viene visualizzata una stringa nel prompt dei comandi.

  • Poiché la condizione della seconda istruzione "if" restituisce false, la parte echo dell'istruzione non verrà eseguita.

Output

Il comando precedente produce il seguente output.

"The value of variable String1" 
"Unknown value"

Controllo degli argomenti della riga di comando

L'istruzione "if else" può essere utilizzata anche per il controllo degli argomenti della riga di comando. L'esempio seguente mostra come utilizzare l'istruzione "if" per verificare i valori degli argomenti della riga di comando.

Example

@echo off 
echo %1 
echo %2 
echo %3 
if %1%==1 (echo "The value is 1") else (echo "Unknown value") 
if %2%==2 (echo "The value is 2") else (echo "Unknown value") 
if %3%==3 (echo "The value is 3") else (echo "Unknown value")

Output

Se il codice sopra viene salvato in un file chiamato test.bat e il programma viene eseguito come

test.bat 1 2 4

Di seguito sarà l'output del programma di cui sopra.

1 
2 
4 
"The value is 1" 
"The value is 2" 
"Unknown value"

se definito

Un caso speciale per l'istruzione "if" è "if defined", che viene utilizzato per verificare l'esistenza di una variabile. Di seguito è riportata la sintassi generale dell'istruzione.

if defined somevariable somecommand

Di seguito è riportato un esempio di come può essere utilizzata l'istruzione "if defined".

Example

@echo off 
SET str1 = String1 
SET str2 = String2 
if defined str1 echo "Variable str1 is defined"

if defined str3 (echo "Variable str3 is defined") else (echo "Variable str3 is not defined")

Output

Il comando precedente produce il seguente output.

"Variable str1 is defined" 
"Variable str3 is not defined"

se esiste

Un altro caso speciale per l'istruzione "if" è "se esiste", che viene utilizzato per verificare l'esistenza di un file. Di seguito è riportata la sintassi generale dell'istruzione.

If exist somefile.ext do_something

Di seguito è riportato un esempio di come può essere utilizzata l'istruzione "if exist".

Example

@echo off 
if exist C:\set2.txt echo "File exists" 
if exist C:\set3.txt (echo "File exists") else (echo "File does not exist")

Output

Supponiamo che ci sia un file chiamato set2.txt nell'unità C e che non ci sia alcun file chiamato set3.txt. Quindi, di seguito sarà l'output del codice sopra.

"File exists"
"File does not exist"