Cómo obtener un archivo por lotes .bat y continuar con la siguiente declaración si hay un error
-
09-06-2019 - |
Pregunta
Estoy intentando programar el apagado de mis servidores VM en un archivo .bat.Si uno de los comandos vmware-cmd falla (por ejemplo, porque la máquina ya está apagada), me gustaría que continúe en lugar de fallar.
c:
cd "c:\Program Files\VMWare\VmWare Server"
vmware-cmd C:\VMImages\TCVMDEVSQL01\TCVMDEVSQL01.vmx suspend soft -q
vmware-cmd C:\VMImages\DevEnv\DevEnv\DevEnv.vmx suspend soft -q
vmware-cmd C:\VMImages\DevEnv\TCVMDEV02\TCVMDEV02.vmx suspend soft =q
robocopy c:\vmimages\ \\tcedilacie1tb\VMShare\DevEnvironmentBackups\ /mir /z /r:0 /w:0
vmware-cmd C:\VMImages\TCVMDEVSQL01\TCVMDEVSQL01.vmx start
vmware-cmd C:\VMImages\DevEnv\DevEnv\DevEnv.vmx start
vmware-cmd C:\VMImages\DevEnv\TCVMDEV02\TCVMDEV02.vmx start
Solución
Ejecútelo dentro de otra instancia de comando con CMD /C
CMD /C vmware-cmd C:\...
Esto debería mantener en ejecución los archivos BAT originales.
Otros consejos
Si está llamando a otro archivo por lotes, debe usar CALL batchfile.cmd
¿Has intentado usar "inicio (cmd)" para cada comando que estás ejecutando?
Podría escribir un pequeño programa que ejecute el comando y devuelva un valor (digamos -1 para un error).Este valor se puede utilizar en su archivo por lotes.
Un archivo por lotes debe continuar ejecutándose, incluso si el comando anterior generó un error.Quizás, ¿lo que está viendo es que el lote se cancela debido a algún otro error?