发生错误后如何让我的 .bat 文件继续运行

发生错误后如何让我的 .bat 文件继续运行

我在 Windows 中有一个 .bat 文件,它执行三件事

cmd1 arg1 arg2
cmd2 arg3 
cmd3 arg4 arg5 arg6

有时 cmd1 会失败,这没关系,我想继续执行 cmd2 和 cmd3。但我的 bat 停在 cmd1。我该如何避免这种情况?

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

答案1

另一个选择是使用“&”符号 ( &)

cmd1 & cmd2 & cmd3

如果使用 double,则只有前一个命令成功完成后才会继续执行 ( %ERRORLEVEL%==0)

cmd1 && cmd2 && cmd3

如果使用双管道 ( ||),则仅当前一个命令完成并出现错误代码时,才会运行下一个命令 ( %ERRORLEVEL% NEQ 0)

cmd1 || cmd2 || cmd3

答案2

这对我有用:

cmd.exe /c cmd1 arg1
cmd2
...

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

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

答案3

假设 cmds 是其他 .bat 文件,则命令堆叠如下:

 call cmd1
 call cmd2
 call cmd3

答案4

添加到加拿大人 Luke 的回答,如果你想让你的脚本更有条理,你可以^在脚本的新行中继续命令链,如下所示:

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

而不是丑陋

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

相关内容