2010-08-10 14 views

Respuesta

38

Parece que querrá el comando "If Errorlevel". Asumiendo que su ejecutable devuelve un 0 no el código de salida en caso de fallo, haces algo como:

myProgram.exe 
if errorlevel 1 goto somethingbad 
echo Success! 
exit 
:somethingbad 
echo Something Bad Happened. 

comprobación Errorlevel se lleva a cabo como un control mayor o igual, por lo que cualquier-0 no valor de salida se activará el salto. Por lo tanto, si necesita verificar más de un valor de salida específico, primero debe buscar el más alto.

+2

Además, dado que alrededor de Windows 2000, hay una variable de entorno "virtual" llamada '% ERRORLEVEL%' que se puede probar con '==', 'EQU',' LSS', etc. –

+0

¡Perfecto! Gracias. – Dlongnecker

+2

Oh, para la posteridad, para que se detenga en caso de error, después de: algo malo, use un comando de "pausa" – Dlongnecker

24

También puede usar conditional processing symbols para hacer una simple prueba de éxito/falla. Por ejemplo:

myProgram.exe && echo Done! 

imprimiría Done! sólo si myProgram.exe volvieron con nivel de error 0.

myProgram.exe || PAUSE 

haría que el archivo por lotes para hacer una pausa si MyProgram.EXE devuelve un nivel de error distinto de cero.

+0

Muy bueno, compacto y realmente más legible Diría que – Dlongnecker

+0

Tengo que estar de acuerdo en que esta solución parece mucho mejor – dmportella

+2

Así que podrías hacer: 'myProgram.exe || exit/b 1' para detener el resto de los comandos? – rakslice

Cuestiones relacionadas