Eu tenho um arquivo .bat no Windows que faz três coisas
cmd1 arg1 arg2
cmd2 arg3
cmd3 arg4 arg5 arg6
Às vezes, o cmd1 pode falhar e tudo bem, eu gostaria de continuar e executar o cmd2 e o cmd3. Mas meu bastão para no cmd1. Como posso evitar isso?
Atualização para maior clareza - esses não são outros arquivos .bat, são comandos exe. Espero que não precise criar uma árvore de arquivos .bat apenas para conseguir isso.
windows
command-line
batch-file
ConfusedNoob
fonte
fonte
cmd /C
.Respostas:
Outra opção é usar o amperstand (
&
)cmd1 & cmd2 & cmd3
Se você usar um duplo, ele continuará apenas se o comando anterior for concluído com êxito (
%ERRORLEVEL%==0
)cmd1 && cmd2 && cmd3
Se você usar um pipe duplo (
||
), ele executará o próximo comando apenas se o anterior for concluído com um código de erro (%ERRORLEVEL% NEQ 0
)cmd1 || cmd2 || cmd3
fonte
CHKDSK
comando, com argumentos, que funciona. Eu digitocheck D: & check E: & check F:
e funciona. Os argumentos do arquivo BAT incluem as/perf /f /r /b /scan
opçõesPresumindo que os cmds são outros arquivos .bat, os comandos são os seguintes:
fonte
Isso funcionou para mim:
Isso é usado
cmd.exe
para executar o comando em uma nova instância do interpretador de comandos do Windows, para que um comando com falha não interrompa o script em lote. O/c
sinalizador diz ao intérprete para terminar assim que o comando terminar de executar.cmd2
executa mesmo se o primeiro comando falhar. Consultecmd /?
no prompt de comando do Windows para obter mais informações.fonte