¿Cómo obtengo el código de salida de la aplicación desde una línea de comando de Windows?

Resuelto Skrud asked hace 15 años • 7 respuestas

Estoy ejecutando un programa y quiero ver cuál es su código de retorno (ya que devuelve códigos diferentes según diferentes errores).

Sé que en Bash puedo hacer esto ejecutando

eco $?

¿Qué hago cuando uso cmd.exe en Windows?

Skrud avatar Dec 03 '08 01:12 Skrud
Aceptado

El "código de salida" se almacena en una variable de shell denominada errorlevel.

Se errorlevelestablece al final de una aplicación de consola. Las aplicaciones de Windows se comportan de forma un poco diferente; vea la respuesta de @ gary a continuación.

Utilice la ifpalabra clave comando errorlevelpara comparar:

if errorlevel <n> (<statements>)

Que ejecutará declaraciones cuando el nivel de error sea mayor o igual a n . Ejecute if /?para obtener más detalles.

Una variable de shell nombrada errorlevelcontiene el valor como una cadena y se puede desreferenciar envolviéndola con %.

Guión de ejemplo:

my_nifty_exe.exe

rem Give resolution instructions for known exit codes.
rem Ignore exit code 1.
rem Otherwise give a generic error message.

if %errorlevel%==7 (
   echo "Replace magnetic tape."
) else if %errorlevel%==3 (
   echo "Extinguish the printer."
) else if errorlevel 2 (
   echo Unknown Error: %errorlevel% refer to Run Book documentation.
) else (
   echo "Success!"
)

Advertencia: una variable de entorno denominada nivel de error, si existe, anulará la variable de shell denominada nivel de error. if errorlevelLas pruebas no se ven afectadas.

DrFloyd5 avatar Dec 02 '2008 18:12 DrFloyd5

Las pruebas ErrorLevelfuncionan para aplicaciones de consola , pero como lo insinuó dmihailescu , esto no funcionará si intenta ejecutar una aplicación en ventana (por ejemplo, basada en Win32) desde un símbolo del sistema. Se ejecutará una aplicación en ventana en segundo plano y el control volverá inmediatamente al símbolo del sistema (muy probablemente con un valor ErrorLevelde cero para indicar que el proceso se creó correctamente). Cuando finalmente se cierra una aplicación con ventana, se pierde su estado de salida.

Sin embargo, en lugar de utilizar el iniciador de C++ basado en consola mencionado en otra parte, una alternativa más sencilla es iniciar una aplicación en ventana utilizando el START /WAITcomando del símbolo del sistema. Esto iniciará la aplicación en ventana, esperará a que salga y luego devolverá el control al símbolo del sistema con el estado de salida del proceso establecido en ErrorLevel.

start /wait something.exe
echo %errorlevel%
Gary avatar Jul 13 '2012 18:07 Gary

Utilice la variable ERRORLEVEL incorporada:

echo %ERRORLEVEL%

¡Pero tenga cuidado si una aplicación ha definido una variable de entorno llamada ERRORLEVEL !

Adam Rosenfield avatar Dec 02 '2008 18:12 Adam Rosenfield