W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
使用條件處理符號(hào)可以從單個(gè)命令行或腳本運(yùn)行多個(gè)命令。通過(guò)條件處理符號(hào)運(yùn)行多個(gè)命令時(shí),條件處理符號(hào)右邊的命令根據(jù)條件處理符號(hào)左邊的命令結(jié)果來(lái)發(fā)揮作用。例如,只有在前一個(gè)命令失敗的情況下,才可能需要運(yùn)行一個(gè)新命令?;蛘?,只有在前一個(gè)命令成功時(shí)才可能需要運(yùn)行一個(gè)新命令。
可以使用下表列出的特殊字符來(lái)傳遞多個(gè)命令。
字符 語(yǔ)法 定義
& [...] command1 & command2 用來(lái)分隔一個(gè)命令行中的多個(gè)命令。Cmd.exe 運(yùn)行第一個(gè)命令,然后運(yùn)行第二個(gè)命令。
&& [...] command1 && command2 只有在符號(hào) && 前面的命令成功時(shí),才用于運(yùn)行該符號(hào)后面的命令。Cmd.exe 運(yùn)行第一個(gè)命令,然后只有在第一個(gè)命令運(yùn)行成功時(shí)才運(yùn)行第二個(gè)命令。
|| [...] command1 || command2 只有在符號(hào) || 前面的命令失敗時(shí),才用于運(yùn)行符號(hào) || 后面的命令。Cmd.exe 運(yùn)行第一個(gè)命令,然后只有在第一個(gè)命令未能運(yùn)行成功(接收到大于零的錯(cuò)誤代碼)時(shí)才運(yùn)行第二個(gè)命令。
( ) [...] (command1 & command2) 用來(lái)分組或嵌套多個(gè)命令。
; 或者 , command1 parameter1;parameter2 用來(lái)分隔命令參數(shù)。
注意
· “與”符號(hào) (&)、管道符號(hào) (|) 以及括號(hào) () 是特殊字符,將它們作為參數(shù)傳遞時(shí),必須在其前面加上轉(zhuǎn)義字符 (^) 或引號(hào)。
· 如果某個(gè)命令成功完成操作,則該命令就返回零 (0) 退出代碼或不返回任何退出代碼
> 創(chuàng)建一個(gè)文件
>> 追加到一個(gè)文件后面
@ 前綴字符.表示執(zhí)行時(shí)本行在cmd里面不顯示, 可以使用 echo off關(guān)閉顯示
^ 對(duì)特殊符號(hào)( > < &)的前導(dǎo)字符. 第一個(gè)只是顯示aaa 第二個(gè)輸出文件bbb
echo 123456 ^> aaa
echo 1231231 > bbb
() 包含命令
(echo aa & echo bb)
, 和空格一樣的缺省分隔符號(hào).
; 注釋,表示后面為注釋
: 標(biāo)號(hào)作用
│ 管道操作
; 符號(hào)當(dāng)命令相同的時(shí)候可以將不同的目標(biāo)用;隔離開(kāi)來(lái)但執(zhí)行效果不變。如執(zhí)行過(guò)程中發(fā)生錯(cuò)誤則只返回錯(cuò)誤報(bào)告但程序還是會(huì)繼續(xù)執(zhí)行
首先, @ 不是一個(gè)命令, 而是DOS 批處理的一個(gè)特殊標(biāo)記符, 僅用于屏蔽命令行回顯. 下面是DOS命令行或批處理中可能會(huì)見(jiàn)到的一些特殊標(biāo)記符:
CR(0D) 命令行結(jié)束符
Escape(1B) ANSI轉(zhuǎn)義字符引導(dǎo)符
Space(20) 常用的參數(shù)界定符
Tab(09) ; = 不常用的參數(shù)界定符
+ COPY命令文件連接符
* ? 文件通配符
"" 字符串界定符
| 命令管道符
< > >> 文件重定向符
@ 命令行回顯屏蔽符
/ 參數(shù)開(kāi)關(guān)引導(dǎo)符
: 批處理標(biāo)簽引導(dǎo)符
% 批處理變量引導(dǎo)符
其次, :: 確實(shí)可以起到rem 的注釋作用, 而且更簡(jiǎn)潔有效; 但有兩點(diǎn)需要注意:
第一, 除了 :: 之外, 任何以 :開(kāi)頭的字符行, 在批處理中都被視作標(biāo)號(hào), 而直接忽略其后的所有內(nèi)容, 只是為了與正常的標(biāo)號(hào)相區(qū)別, 建議使用 goto 所無(wú)法識(shí)別的標(biāo)號(hào), 即在 :后緊跟一個(gè)非字母數(shù)字的一個(gè)特殊符號(hào).
第二, 與rem 不同的是, ::后的字符行在執(zhí)行時(shí)不會(huì)回顯, 無(wú)論是否用echo on打開(kāi)命令行回顯狀態(tài), 因?yàn)槊罱忉屍鞑徽J(rèn)為他是一個(gè)有效的命令行, 就此點(diǎn)來(lái)看, rem 在某些場(chǎng)合下將比 :: 更為適用; 另外, rem 可以用于 config.sys 文件中.
也可以使用以下的用法:
if exist command
device 是指DOS系統(tǒng)中已加載的設(shè)備, 在win98下通常有:
AUX, PRN, CON, NUL
COM1, COM2, COM3, COM4
LPT1, LPT2, LPT3, LPT4
XMSXXXX0, EMMXXXX0
A: B: C: ...,
CLOCK$, CONFIG$, DblBuff$, IFS$HLP$
具體的內(nèi)容會(huì)因硬軟件環(huán)境的不同而略有差異, 使用這些設(shè)備名稱(chēng)時(shí), 需要保證以下三點(diǎn):
1. 該設(shè)備確實(shí)存在(由軟件虛擬的設(shè)備除外)
2. 該設(shè)備驅(qū)動(dòng)程序已加載(aux, prn等標(biāo)準(zhǔn)設(shè)備由系統(tǒng)缺省定義)
3. 該設(shè)備已準(zhǔn)備好(主要是指a: b: ..., com1..., lpt1...等)
可通過(guò)命令 mem/d | find "device" /i 來(lái)檢閱你的系統(tǒng)中所加載的設(shè)備
另外, 在DOS系統(tǒng)中, 設(shè)備也被認(rèn)為是一種特殊的文件, 而文件也可以稱(chēng)作字符設(shè)備; 因?yàn)樵O(shè)備(device)與文件都是使用句柄(handle)來(lái)管理的, 句柄就是名字, 類(lèi)似于文件名, 只不過(guò)句柄不是應(yīng)用于磁盤(pán)管理, 而是應(yīng)用于內(nèi)存管理而已, 所謂設(shè)備加載也即指在內(nèi)存中為其分配可引用的句柄.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: