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