![用於批次檔中的命令連結的多行 && 組合運算符](https://rvso.com/image/1444055/%E7%94%A8%E6%96%BC%E6%89%B9%E6%AC%A1%E6%AA%94%E4%B8%AD%E7%9A%84%E5%91%BD%E4%BB%A4%E9%80%A3%E7%B5%90%E7%9A%84%E5%A4%9A%E8%A1%8C%20%26%26%20%E7%B5%84%E5%90%88%E9%81%8B%E7%AE%97%E7%AC%A6.png)
我懂了該運算符在 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