我懂了該運算符在 Windows(也可能是 Linux?)中用於將多個命令連結/組合在一行中。只要前面的指令成功完成(退出代碼 0),就會依序執行指令。
但是,我不明白它是否可以在批次檔中使用,在批次檔中一個接一個地指定命令,每行一個命令。在這種情況下如何達到相同的效果?怎麼分成cmd1 && cmd2 && cmd3
多行?你如何終止
cmd1
cmd2
cmd3
一旦第一個命令失敗?
我也想知道運營商的名字,以便以後自己找到類似問題的答案。
答案1
cmd1 && cmd2 && cmd3
可以寫成多行
cmd1
if not errorlevel 1 cmd2
if not errorlevel 1 cmd3
其中每個命令的執行將取決於前一個命令的結果
答案2
在 GNU/Linux 中,我可以將命令拆分cmd1 && cmd2 && cmd3
為腳本檔案中的多行(例如,為了可讀性),如下所示:
cmd1 &&
cmd2 &&
cmd3
答案3
它們之間的區別是:
cmd1
cmd2
cmd3
將單獨觸發每個命令,並且如果您在命令完成之前按Ctrl+,則允許終止批次作業。c
然而
cmd1 && cmd2 && cmd3
將依次啟動命令,但是,無需查看腳本/一次性啟動。
進一步舉例來說,
以第一個範例為例,如果您在 cmd1 執行時間編輯腳本並將 cmd2 變更為 cmd3,則當 cmd1 完成時,它將載入 cmd3。
在 Linux 上,如果我這樣做,ifdown eth0
我將丟失 ssh 會話,因此,我將ifdown eth0 && ifup eth0
連結命令。
如果您想做一些關於失敗的事情,您應該查看 if 語句和開關以及返回代碼和錯誤等級。林基。
答案4
對於批次文件,您需要在每個條件操作 &&(或 ||)後面加上 ^ 分隔符號。例如:
echo 1 && ^
echo 2 && ^
copy >null && ^
echo 4