& [...] command1 & command2 用來分隔乙個命令列中的多個命令。cmd.exe 執行第乙個命令,然後執行第二個命令。
&& [...] command1 && command2 只有在符號 && 前面的命令成功時,才用於執行該符號後面的命令。cmd.exe 執行第乙個命令,然後只有在第乙個命令執行成功時才執行第二個命令。
|| [...] command1 || command2 只有在符號 || 前面的命令失敗時,才用於執行符號 || 後面的命令。cmd.exe 執行第乙個命令,然後只有在第乙個命令未能執行成功(接收到大於零的錯誤**)時才執行第二個命令。
命令概括:
& 一般念「and」。
引數詳解:
1.先說說&
「用來分隔乙個命令列中的多個命令」,官方的這種解釋,其實是從直譯器的角度出發的。如果按人的角度來說的話,應該是「連線多條命令」。
比如我要輸出 hello 和 world 2行文字,用」&「將兩條echo命令連線。
複製** **如下:
@echo off
echo hello & echo world
pause
「&」在使用中最常出現的問題是變數延遲,關於這個問題,可以參考批處理for語句從入門到精通中關於這個知識點的部分。
2.再說說errorlevel
errorlevel由兩個單詞構成,乙個error(錯誤),乙個level(等級),如果綜合這兩個單詞,字面意義其實就是」錯誤數量「或者」錯誤型別「。
如果命令執行成功,那麼」錯誤數量「自然是零。如果執行失敗,那麼」錯誤數量「就是非零。
關於errorlevel的帖子:
批處理內部命令對錯誤返回碼errorlevel的影響
對批處理中errorlevel的幾點猜測
3.執行符號前的命令成功就執行符號後的命令
輸出 hello 和 world 2行文字,用」&&「將兩條echo命令連線。
複製** **如下:
@echo off
echo hello && echo world
pause
執行的結果和用"&"鏈結兩條命令時一模一樣,那麼」&「和"&&"功能一樣嗎?
答案是:它們的功能完全不同,這種一樣的結果不過是一種巧合罷了。
」&「的作用不過是鏈結多條命令,而」&&「是為了判斷符號前的命令是否執行成功,從而決定是否執行符號後的命令。
這裡舉乙個例子來加以說明:
複製** **如下:
c:\users\helloworld\desktop>start "" "111.txt" && echo hello
系統找不到檔案 111.txt。
c:\users\helloworld\desktop>start "" "111.txt" & echo hello
系統找不到檔案 111.txt。
hello
用start命令開啟乙個不存在的檔案,由於檔案是不存在的,所以start命令執行失敗,這時用"&&"鏈結的命令」echo hello「沒有執行,而用」&「鏈結的執行了。
」&&「的這種特性,讓它成為了特殊的條件運算子。
4.執行符號前的命令失敗就執行符號後的命令
&&的否定操作就是||。
例如:複製** **如下:
c:\users\helloworld\desktop>start "" "111.txt" || echo hello
系統找不到檔案 111.txt。
hello
談談 Python 中的連線符( )
假設有下面一段 a 1 2,3 4 b 5 6,7 8,9 c 11 12,13 14,15 16,17 18,19 20 for item in a,b,c item 0 10 len item print a print b print c這段 的意思是,有三個列表,需要在長度不為 10 的列表...
巨集定義中的 連線符與 符
連線符與 符 連線符號由兩個井號組成,其功能是在帶引數的巨集定義中將兩個子串 token 聯接起來,從而形成乙個新的子串。但它不可以是第乙個或者最後乙個子串。所謂的子串 token 就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理裡有詳盡的解釋,但不知道也無所謂。同時值得注意的是 符是把傳遞...
巨集定義中的 連線符與 符
連線符與 符 連線符號由兩個井號組成,其功能是在帶引數的巨集定義中將兩個子串 token 聯接起來,從而形成乙個新的子串。但它不可以是第乙個或者最後乙個子串。所謂的子串 token 就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理裡有詳盡的解釋,但不知道也無所謂。同時值得注意的是 符是把傳遞...