Secuencia de comandos por lotes: declaración If / else
La siguiente declaración de toma de decisiones es la declaración If / else. A continuación se muestra la forma general de esta declaración.
If (condition) (do_something) ELSE (do_something_else)
El funcionamiento general de esta declaración es que primero se evalúa una condición en la declaración 'si'. Si la condición es verdadera, luego ejecuta las declaraciones a partir de entonces y se detiene antes de la condición else y sale del ciclo. Si la condición es falsa, luego ejecuta las declaraciones en el bloque de instrucciones else y luego sale del ciclo. El siguiente diagrama muestra el flujo de la declaración 'if'.
Comprobación de variables
Al igual que la instrucción 'if' en Batch Script, el if-else también se puede usar para verificar variables que están configuradas en Batch Script. La evaluación de la instrucción 'if' se puede realizar tanto para cadenas como para números.
Comprobación de variables enteras
El siguiente ejemplo muestra cómo se puede usar la instrucción 'if' para números.
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 clave a tener en cuenta sobre el programa anterior es:
Cada código 'if else' se coloca entre corchetes (). Si los corchetes no se colocan para separar el código para el código 'if y else', entonces las declaraciones no serían válidas propiamente las declaraciones if else.
En la primera declaración 'if else', la condición if se evaluaría como verdadera.
En la segunda instrucción 'if else', la condición else se ejecutará ya que los criterios se evaluarían como falsos.
Output
El comando anterior produce la siguiente salida.
"The value of variable c is 15"
"Unknown value"
Comprobación de variables de cadena
El mismo ejemplo se puede repetir para cadenas. El siguiente ejemplo muestra cómo la instrucción 'if else' puede usarse para cadenas.
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 clave a tener en cuenta sobre el programa anterior es:
La primera instrucción 'if' comprueba si el valor de la variable str1 contiene la cadena “String1”. Si es así, se hace eco de una cadena al símbolo del sistema.
Dado que la condición de la segunda instrucción 'if' se evalúa como falsa, la parte de eco de la instrucción no se ejecutará.
Output
El comando anterior produce la siguiente salida.
"The value of variable String1"
"Unknown value"
Comprobación de argumentos en la línea de comandos
La instrucción 'if else' también se puede usar para verificar los argumentos de la línea de comando. El siguiente ejemplo muestra cómo la instrucción 'if' se puede usar para verificar los valores de los argumentos de la línea de 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
Si el código anterior se guarda en un archivo llamado test.bat y el programa se ejecuta como
test.bat 1 2 4
Lo siguiente será el resultado del programa anterior.
1
2
4
"The value is 1"
"The value is 2"
"Unknown value"
si está definido
Un caso especial para la instrucción 'if' es el "if definido", que se utiliza para probar la existencia de una variable. A continuación se muestra la sintaxis general de la declaración.
if defined somevariable somecommand
A continuación se muestra un ejemplo de cómo se puede usar la declaración 'si está definida'.
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
El comando anterior produce la siguiente salida.
"Variable str1 is defined"
"Variable str3 is not defined"
si existe
Otro caso especial para la declaración 'si' es el "si existe", que se utiliza para probar la existencia de un archivo. A continuación se muestra la sintaxis general de la declaración.
If exist somefile.ext do_something
A continuación se muestra un ejemplo de cómo se puede utilizar la declaración "si existe".
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
Supongamos que hay un archivo llamado set2.txt en la unidad C y que no hay ningún archivo llamado set3.txt. Luego, lo siguiente será el resultado del código anterior.
"File exists"
"File does not exist"