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 & cmd3
Si usa un doble, solo continúa si el comando anterior se completa con éxito (
%ERRORLEVEL%==0
)cmd1 && cmd2 && cmd3
Si 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 || cmd3
fuente
CHKDSK
comando, 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 /scan
interruptoresSuponiendo que los cmds son otros archivos .bat que apilan los comandos de esta manera:
fuente
Esto funcionó para mí:
Esto se usa
cmd.exe
para 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/c
bandera le dice al intérprete que finalice tan pronto como el comando termine de ejecutarse.cmd2
se ejecuta incluso si falla el primer comando. Consultecmd /?
desde el símbolo del sistema de Windows para obtener más información.fuente