DOS中的特殊符號(hào)

2018-11-06 10:17 更新


使用條件處理符號(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)存中為其分配可引用的句柄.


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)