如何讓我的 .bat 檔案在發生錯誤後繼續

如何讓我的 .bat 檔案在發生錯誤後繼續

我在 Windows 中有一個 .bat 文件,它執行三件事

cmd1 arg1 arg2
cmd2 arg3 
cmd3 arg4 arg5 arg6

有時cmd1可能會失敗,那也沒關係,我想繼續執行cmd2和cmd3。但我的蝙蝠停在cmd1處。我怎樣才能避免這種情況?

更新為了清楚起見 - 這些不是其他 .bat 文件,它們是 exe 命令。希望我不必僅僅為了實現這一點而建立 .bat 檔案樹。

答案1

另一個選擇是使用與號 ( &)

cmd1 & cmd2 & cmd3

如果您使用雙精確度數,則僅當上一個指令成功完成時才繼續執行 ( %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

假設 cmd 是其他 .bat 文件,則堆疊指令如下:

 call cmd1
 call cmd2
 call cmd3

答案4

要添加到加拿大人盧克的回答,如果您想讓腳本更有組織性,您可以使用^在腳本的新行中繼續命令鏈,如下所示:

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 & ...

相關內容