2011-08-05 8 views

Respuesta

5

If execute.cmd devuelve un entero que se puede utilizar una IF command para comprobar su valor de retorno y si coincide con la deseada de lo que se puede llamar launch.cmd

Supongamos que execute.cmd devuelve 0 si tiene éxito o un entero> = 1 de lo contrario. El lote se vería así:

rem call the execute command 
call execute.cmd 
rem check the return value (referred here as errorlevel) 
if %ERRORLEVEL% ==1 GOTO noexecute 
rem call the launch command 
call launch.cmd 

:noexecute 
rem since we got here, launch is no longer going to be executed 

nota de que el comando se utiliza para rem comentarios.

HTH,
JP

+0

exceute.cmd devuelve 0 si es correcto y 1 si no es así, por lo que se resolvió el problema utilizando su lógica, muchas gracias. Como respondiste primero, estoy aceptando tu respuesta, aunque la respuesta de @jhclark parece correcta. – Anand

+0

@Anand K Gupta su bienvenida :) –

+0

También puede lograr lo mismo con Windows Batch && combinación de esta manera: llame a execute.cmd && llamada launch.cmd – Aacini

3

creo que esto es un duplicado de How do I make a batch file terminate upon encountering an error?.

Su solución en este caso sería:

call execute.cmd 
if %errorlevel% neq 0 exit /b %errorlevel% 
call launch.cmd 
if %errorlevel% neq 0 exit /b %errorlevel% 

Por desgracia, parece que los archivos por lotes de Windows no tienen equivalente de set -e y set -o pipefail UNIX bash. Si está dispuesto a abandonar el muy limitado lenguaje de archivo por lotes, puede probar Windows PowerShell.

+0

Gracias, usted también .. – Anand

Cuestiones relacionadas