¿Cómo puedo hacer que mi archivo .bat continúe después de un error?

¿Cómo puedo hacer que mi archivo .bat continúe después de un error?

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?

ActualizarPara mayor claridad, estos no son otros archivos .bat, son comandos exe. Espero no tener que crear un árbol de archivos .bat solo para lograrlo.

Respuesta1

Otra opción es utilizar el amperstand ( &)

cmd1 & cmd2 & cmd3

Si usa un doble, solo continúa si el comando anterior se completa exitosamente ( %ERRORLEVEL%==0)

cmd1 && cmd2 && cmd3

Si usa una tubería doble ( ||), solo ejecuta el siguiente comando si el anterior se completa con un código de error ( %ERRORLEVEL% NEQ 0).

cmd1 || cmd2 || cmd3

Respuesta2

Esto funcionó para mí:

cmd.exe /c cmd1 arg1
cmd2
...

Esto se utiliza 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 el primer comando falla. Consulte cmd /?desde el símbolo del sistema de Windows para obtener más información.

Respuesta3

Suponiendo que los cmds son otros archivos .bat, apila los comandos de esta manera:

 call cmd1
 call cmd2
 call cmd3

Respuesta4

Para añadir aLa respuesta del canadiense Luke, si desea mantener su secuencia de comandos un poco más organizada, puede usar ^para continuar la cadena de comandos en una nueva línea en su secuencia de comandos, como esta:

scoop install windows-terminal & ^
scoop install joplin & ^
scoop install neovim & ^
scoop install autohotkey & ^
... & ^
scoop update -a

en lugar de lo feo

scoop install windows-terminal & scoop install joplin & scoop install neovim & ...

información relacionada