Secuencia de comandos por lotes: instrucciones If anidadas
A veces, existe el requisito de tener varias declaraciones "si" incrustadas entre sí. A continuación se muestra la forma general de esta declaración.
if(condition1) if (condition2) do_something
Entonces, solo si se cumplen condition1 y condition2, se ejecutará el código en el bloque do_something.
A continuación se muestra un ejemplo de cómo se pueden utilizar las sentencias if anidadas.
Ejemplo
@echo off
SET /A a = 5
SET /A b = 10
if %a%==5 if %b%==10 echo "The value of the variables are correct"
Salida
El comando anterior produce la siguiente salida.
"The value of the variables are correct"
Si errorlevel
Otro caso especial más es "if errorlevel", que se utiliza para probar los códigos de salida del último comando que se ejecutó. Varios comandos emiten códigos de salida enteros para indicar el estado del comando. Generalmente, los comandos pasan 0 si el comando se completó con éxito y 1 si el comando falló.
A continuación se muestra la sintaxis general de esta declaración.
if errorlevel n somecommand
donde "n" es uno de los códigos de salida enteros.
Declaración Goto
Generalmente, la ejecución de un archivo por lotes procede línea por línea con los comandos en cada línea que se ejecutan a su vez. Sin embargo, a menudo es deseable ejecutar una sección particular de un archivo por lotes mientras se omiten otras partes. La capacidad de saltar a una sección en particular la proporciona el comando "goto" con el nombre apropiado (escrito como una palabra). La sección de destino está etiquetada con una línea al principio que tiene un nombre con dos puntos al principio. Por lo tanto, el guión se ve así:
...
goto :label
...some commands
:label
...some other commands
La ejecución saltará "algunos comandos" y comenzará con "algunos otros comandos". La etiqueta puede ser una línea en cualquier lugar del script, incluso antes del comando "goto". Los comandos "Goto" suelen aparecer en sentencias "if". Por ejemplo, puede tener un comando del tipo:
if (condition) goto :label
A continuación se muestra un ejemplo de cómo se puede utilizar la instrucción goto.
Ejemplo
@echo off
SET /A a = 5
if %a%==5 goto :labela
if %a%==10 goto :labelb
:labela
echo "The value of a is 5"
exit /b 0
:labelb
echo "The value of a is 10"
La clave a tener en cuenta sobre el programa anterior es:
Las declaraciones de código para la etiqueta deben estar en la siguiente línea después de la declaración de la etiqueta.
Puede definir varias declaraciones goto y sus etiquetas correspondientes en un archivo por lotes.
Las declaraciones de etiquetas pueden estar en cualquier lugar del archivo.
Salida
El comando anterior produce la siguiente salida.
"The value of a is 5"