出错后如何让我的 .bat 文件继续

Con*_*oob 39 windows command-line batch-file

我在 Windows 中有一个 .bat 文件,它可以做三件事

cmd1 arg1 arg2
cmd2 arg3 
cmd3 arg4 arg5 arg6
Run Code Online (Sandbox Code Playgroud)

有时 cmd1 会失败,这很好,我想继续执行 cmd2 和 cmd3。但是我的蝙蝠停在 cmd1 处。我怎样才能避免这种情况?

为清楚起见更新- 这些不是其他 .bat 文件,它们是 exe 命令。希望我不必为了实现这一点而构建 .bat 文件树。

Can*_*uke 26

另一种选择是使用符号 ( &)

cmd1 & cmd2 & cmd3

如果使用双精度型,则只有在上一个命令成功完成时才会继续 ( %ERRORLEVEL%==0)

cmd1 && cmd2 && cmd3

如果您使用双管道 ( ||),它只会在前一个命令以错误代码 ( %ERRORLEVEL% NEQ 0)完成时才运行下一个命令

cmd1 || cmd2 || cmd3

  • 好一个!给我带来了如何实现多次重试的想法: cmd || cmd || ... 将执行下一个 cmd 直到成功 (2认同)
  • 这使得长脚本难以阅读,有没有其他办法? (2认同)

mdp*_*dpc 17

假设 cmds 是其他 .bat 文件,像这样堆叠命令:

 call cmd1
 call cmd2
 call cmd3
Run Code Online (Sandbox Code Playgroud)


小智 15

这对我有用:

cmd.exe /c cmd1 arg1
cmd2
...
Run Code Online (Sandbox Code Playgroud)

这用于cmd.exe在 Windows 命令解释器的新实例中执行命令,因此失败的命令不会中断批处理脚本。该/c标志告诉解释器在命令完成执行后立即终止。

cmd2即使第一个命令失败也会执行。有关cmd /?详细信息,请参阅Windows 命令提示符。