批處理命令教學(xué)之復(fù)合語句連接符(&、&&和||)
幫助信息:
& [...] command1 & command2 用來分隔一個命令行中的多個命令。Cmd.exe 運行第一個命令,然后運行第二個命令。
&& [...] command1 && command2 只有在符號 && 前面的命令成功時,才用于運行該符號后面的命令。Cmd.exe 運行第一個命令,然后只有在第一個命令運行成功時才運行第二個命令。
|| [...] command1 || command2 只有在符號 || 前面的命令失敗時,才用于運行符號 || 后面的命令。Cmd.exe 運行第一個命令,然后只有在第一個命令未能運行成功(接收到大于零的錯誤代碼)時才運行第二個命令。
以上都是官方的幫助信息(引用于ntcmds.chm),最好用googl搜索下載一本。
命令概括:
& 一般念“and”。
參數(shù)詳解:
1.先說說&
“用來分隔一個命令行中的多個命令”,官方的這種解釋,其實是從解釋器的角度出發(fā)的。如果按人的角度來說的話,應(yīng)該是“連接多條命令”。
比如我要輸出 hello 和 world 2行文本,用”&“將兩條echo命令連接。
@echo off
echo hello & echo world
pause
“&”在使用中最常出現(xiàn)的問題是變量延遲,關(guān)于這個問題,可以參考批處理for語句從入門到精通中關(guān)于這個知識點的部分。
2.再說說ErrorLevel
ErrorLevel由兩個單詞構(gòu)成,一個Error(錯誤),一個Level(等級),如果綜合這兩個單詞,字面意義其實就是”錯誤數(shù)量“或者”錯誤類型“。
如果命令執(zhí)行成功,那么”錯誤數(shù)量“自然是零。如果執(zhí)行失敗,那么”錯誤數(shù)量“就是非零。
關(guān)于ErrorLevel的帖子:
批處理內(nèi)部命令對錯誤返回碼errorlevel的影響
對批處理中errorlevel的幾點猜測
3.執(zhí)行符號前的命令成功就執(zhí)行符號后的命令
輸出 hello 和 world 2行文本,用”&&“將兩條echo命令連接。
@echo off
echo hello && echo world
pause
執(zhí)行的結(jié)果和用"&"鏈接兩條命令時一模一樣,那么”&“和"&&"功能一樣嗎?
答案是:它們的功能完全不同,這種一樣的結(jié)果不過是一種巧合罷了。
”&“的作用不過是鏈接多條命令,而”&&“是為了判斷符號前的命令是否執(zhí)行成功,從而決定是否執(zhí)行符號后的命令。
這里舉一個例子來加以說明:
C:\Users\helloworld\Desktop>start "" "111.txt" && echo hello
系統(tǒng)找不到文件 111.txt。
C:\Users\helloworld\Desktop>start "" "111.txt" & echo hello
系統(tǒng)找不到文件 111.txt。
hello
用start命令打開一個不存在的文件,由于文件是不存在的,所以start命令執(zhí)行失敗,這時用"&&"鏈接的命令”echo hello“沒有執(zhí)行,而用”&“鏈接的執(zhí)行了。
”&&“的這種特性,讓它成為了特殊的條件運算符。
4.執(zhí)行符號前的命令失敗就執(zhí)行符號后的命令
&&的否定操作就是||。
例如:
C:\Users\helloworld\Desktop>start "" "111.txt" || echo hello
系統(tǒng)找不到文件 111.txt。
hello
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
bat如何獲取當(dāng)前盤符和當(dāng)前所在文件夾的路徑
這篇文章主要介紹了bat如何獲取當(dāng)前盤符和當(dāng)前所在文件夾的路徑,文中補充介紹了bat 獲取文件目錄路徑(4種情況,各有配圖),感興趣的朋友跟隨小編一起看看吧2024-03-03
批處理實現(xiàn)MySQL數(shù)據(jù)庫備份與還原
數(shù)據(jù)庫備份的重要性和必要性是必不可少的,本文主要介紹了批處理實現(xiàn)MySQL數(shù)據(jù)庫備份與還原,具有一定的參考價值,感興趣的可以了解一下2024-02-02

