Tengo un archivo .bat en Windows que hace tres cosas
cmd1 arg1 arg2
cmd2 arg3
cmd3 arg4 arg5 arg6
A veces, cmd1 puede fallar y está bien, me gustaría continuar y ejecutar cmd2 y cmd3. Pero mi bate se detiene en cmd1. ¿Cómo puedo evitar esto?
Actualización para mayor claridad: estos no son otros archivos .bat, son comandos exe. Espero no tener que construir un árbol de archivos .bat solo para lograr esto.
windows
command-line
batch-file
Confundido
fuente
fuente

cmd /C.Respuestas:
Otra opción es usar el amperstand (
&)cmd1 & cmd2 & cmd3Si usa un doble, solo continúa si el comando anterior se completa con éxito (
%ERRORLEVEL%==0)cmd1 && cmd2 && cmd3Si usa un doble tubo (
||), solo ejecuta el siguiente comando si el anterior se completa con un código de error (%ERRORLEVEL% NEQ 0)cmd1 || cmd2 || cmd3fuente
CHKDSKcomando, con argumentos, que funciona. Escribocheck D: & check E: & check F:y funciona. Los argumentos que tiene el archivo BAT incluyen los/perf /f /r /b /scaninterruptoresSuponiendo que los cmds son otros archivos .bat que apilan los comandos de esta manera:
fuente
Esto funcionó para mí:
Esto se usa
cmd.exepara ejecutar el comando en una nueva instancia del intérprete de comandos de Windows, por lo que un comando fallido no interrumpe el script por lotes. La/cbandera le dice al intérprete que finalice tan pronto como el comando termine de ejecutarse.cmd2se ejecuta incluso si falla el primer comando. Consultecmd /?desde el símbolo del sistema de Windows para obtener más información.fuente