Script de lote: código de retorno
De forma predeterminada, cuando se completa la ejecución de una línea de comandos, debe devolver cero cuando la ejecución se realiza correctamente o un valor distinto de cero cuando la ejecución falla. Cuando un script por lotes devuelve un valor distinto de cero después de que falla la ejecución, el valor distinto de cero indicará cuál es el número de error. Luego usaremos el número de error para determinar de qué se trata el error y resolverlo en consecuencia.
A continuación se muestran el código de salida común y su descripción.
Código de error | Descripción |
---|---|
0 | Programa completado con éxito. |
1 | Función incorrecta. Indica que Action ha intentado ejecutar un comando no reconocido en el símbolo del sistema de Windows cmd.exe. |
2 | El sistema no puede encontrar el archivo especificado. Indica que el archivo no se puede encontrar en la ubicación especificada. |
3 | El sistema no puede encontrar la ruta especificada. Indica que no se puede encontrar la ruta especificada. |
5 | Acceso denegado. Indica que el usuario no tiene derechos de acceso al recurso especificado. |
9009 0x2331 |
El programa no se reconoce como un comando interno o externo, programa operable o archivo por lotes. Indica que el comando, el nombre de la aplicación o la ruta se han escrito mal al configurar la Acción. |
221225495 0xC0000017 -1073741801 |
No hay suficiente memoria virtual disponible. Indica que Windows se ha quedado sin memoria. |
3221225786 0xC000013A -1073741510 |
La aplicación terminó como resultado de CTRL + C. Indica que la aplicación ha sido terminada por la entrada del teclado del usuario CTRL + C o CTRL + Break o cerrando la ventana del símbolo del sistema. |
3221225794 0xC0000142 -1073741502 |
La aplicación falló en iniciar correctamente. Indica que la aplicación se ha lanzado en un escritorio al que el usuario actual no tiene derechos de acceso. Otra posible causa es que gdi32.dll o user32.dll no se hayan inicializado. |
Nivel de error
La variable de entorno% ERRORLEVEL% contiene el código de retorno del último programa o script ejecutado.
De forma predeterminada, la forma de verificar el ERRORLEVEL es a través del siguiente código.
Sintaxis
IF %ERRORLEVEL% NEQ 0 (
DO_Something
)
Es común utilizar el comando EXIT / B% ERRORLEVEL% al final del archivo por lotes para devolver los códigos de error del archivo por lotes.
EXIT / B al final del archivo por lotes detendrá la ejecución de un archivo por lotes.
Utilice EXIT / B <códigos de salida> al final del archivo por lotes para devolver códigos de retorno personalizados.
La variable de entorno% ERRORLEVEL% contiene el último nivel de error en el archivo por lotes, que son los últimos códigos de error del último comando ejecutado. En el archivo por lotes, siempre es una buena práctica usar variables de entorno en lugar de valores constantes, ya que la misma variable se expande a diferentes valores en diferentes computadoras.
Veamos un ejemplo rápido sobre cómo buscar códigos de error en un archivo por lotes.
Ejemplo
Supongamos que tenemos un archivo por lotes llamado Find.cmd que tiene el siguiente código. En el código, hemos mencionado claramente que si no encontramos el archivo llamado lists.txt, entonces deberíamos establecer el nivel de error en 7. De manera similar, si vemos que la variable userprofile no está definida, entonces deberíamos establecer el código de nivel de error en 9.
if not exist c:\lists.txt exit 7
if not defined userprofile exit 9
exit 0
Supongamos que tenemos otro archivo llamado App.cmd que llama a Find.cmd primero. Ahora, si Find.cmd devuelve un error en el que establece el nivel de error en mayor que 0, saldrá del programa. En el siguiente archivo por lotes, después de llamar a Find.cnd find, realmente verifica si el nivel de error es mayor que 0.
Call Find.cmd
if errorlevel gtr 0 exit
echo “Successful completion”
Salida
En el programa anterior, podemos tener los siguientes escenarios como salida:
Si el archivo c: \ lists.txt no existe, no se mostrará nada en la salida de la consola.
Si la variable userprofile no existe, no se mostrará nada en la salida de la consola.
Si se cumplen las dos condiciones anteriores, se mostrará la cadena "Finalización satisfactoria" en el símbolo del sistema.
Bucles
En el capítulo de toma de decisiones, hemos visto declaraciones que se han ejecutado una tras otra de manera secuencial. Además, las implementaciones también se pueden realizar en Batch Script para alterar el flujo de control en la lógica de un programa. Luego se clasifican en declaraciones de flujo de control.
S. No | Bucles y descripción |
---|---|
1 | Mientras que la implementación de la declaración No hay una instrucción while directa disponible en Batch Script pero podemos hacer una implementación de este bucle muy fácilmente usando la instrucción if y las etiquetas. |
2 | Para instrucciones: implementaciones de listas La construcción "FOR" ofrece capacidades de bucle para archivos por lotes. A continuación se muestra la construcción común de la declaración 'for' para trabajar con una lista de valores. |
3 | Bucle a través de rangos La instrucción 'for' también tiene la capacidad de moverse a través de un rango de valores. A continuación se muestra la forma general de la declaración. |
4 | Clásico para implementación de bucle A continuación se muestra la declaración clásica 'for' que está disponible en la mayoría de los lenguajes de programación. |
Recorrer los argumentos de la línea de comandos
La instrucción 'for' también se puede usar para verificar los argumentos de la línea de comandos. El siguiente ejemplo muestra cómo se puede utilizar la instrucción 'for' para recorrer los argumentos de la línea de comandos.
Ejemplo
@ECHO OFF
:Loop
IF "%1"=="" GOTO completed
FOR %%F IN (%1) DO echo %%F
SHIFT
GOTO Loop
:completed
Salida
Supongamos que nuestro código anterior está almacenado en un archivo llamado Test.bat. El comando anterior producirá la siguiente salida si el archivo por lotes pasa los argumentos de la línea de comando de 1,2 y 3 como Test.bat 1 2 3.
1
2
3
S. No | Bucles y descripción |
---|---|
1 | Implementación de declaración de ruptura La sentencia break se usa para alterar el flujo de control dentro de los bucles dentro de cualquier lenguaje de programación. La sentencia break se usa normalmente en construcciones de bucle y se usa para causar la terminación inmediata del bucle de cierre más interno. |