como posso fazer meu arquivo .bat continuar após um erro

como posso fazer meu arquivo .bat continuar após um erro

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, gostaria de continuar e executar o cmd2 e o cmd3. Mas meu bastão para em cmd1. Como posso evitar isso?

Atualizarpara maior clareza - estes não são outros arquivos .bat, são comandos exe. Espero não precisar construir uma árvore de arquivos .bat apenas para conseguir isso.

Responder1

Outra opção é usar o amperstand ( &)

cmd1 & cmd2 & cmd3

Se você usar um double, ele só continuará se o comando anterior for concluído com sucesso ( %ERRORLEVEL%==0)

cmd1 && cmd2 && cmd3

Se você usar um canal duplo ( ||), ele só executa o próximo comando se o anterior for concluído com um código de erro ( %ERRORLEVEL% NEQ 0)

cmd1 || cmd2 || cmd3

Responder2

Isso funcionou para mim:

cmd.exe /c cmd1 arg1
cmd2
...

Isso é usado cmd.exepara 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 /csinalizador diz ao intérprete para encerrar assim que o comando terminar de ser executado.

cmd2é executado mesmo se o primeiro comando falhar. Consulte cmd /?o prompt de comando do Windows para obter mais informações.

Responder3

Presumindo que os cmds sejam outros arquivos .bat, empilham os comandos assim:

 call cmd1
 call cmd2
 call cmd3

Responder4

Para adicionar aA resposta do canadense Luke, se quiser manter seu script um pouco mais organizado você pode usar ^para continuar a cadeia de comando em uma nova linha em seu script, assim:

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

Em vez do feio

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

informação relacionada