DOS中的特殊符號

2018-11-06 10:17 更新


使用條件處理符號可以從單個(gè)命令行或腳本運(yùn)行多個(gè)命令。通過條件處理符號運(yùn)行多個(gè)命令時(shí),條件處理符號右邊的命令根據(jù)條件處理符號左邊的命令結(jié)果來發(fā)揮作用。例如,只有在前一個(gè)命令失敗的情況下,才可能需要運(yùn)行一個(gè)新命令?;蛘?,只有在前一個(gè)命令成功時(shí)才可能需要運(yùn)行一個(gè)新命令。

可以使用下表列出的特殊字符來傳遞多個(gè)命令。

字符        語法        定義

& [...]        command1 & command2        用來分隔一個(gè)命令行中的多個(gè)命令。Cmd.exe 運(yùn)行第一個(gè)命令,然后運(yùn)行第二個(gè)命令。

&& [...]        command1 && command2        只有在符號 && 前面的命令成功時(shí),才用于運(yùn)行該符號后面的命令。Cmd.exe 運(yùn)行第一個(gè)命令,然后只有在第一個(gè)命令運(yùn)行成功時(shí)才運(yùn)行第二個(gè)命令。

|| [...]        command1 || command2        只有在符號 || 前面的命令失敗時(shí),才用于運(yùn)行符號 || 后面的命令。Cmd.exe 運(yùn)行第一個(gè)命令,然后只有在第一個(gè)命令未能運(yùn)行成功(接收到大于零的錯(cuò)誤代碼)時(shí)才運(yùn)行第二個(gè)命令。

( ) [...]        (command1 & command2)         用來分組或嵌套多個(gè)命令。

; 或者 ,        command1 parameter1;parameter2        用來分隔命令參數(shù)。

注意

·        “與”符號 (&)、管道符號 (|) 以及括號 () 是特殊字符,將它們作為參數(shù)傳遞時(shí),必須在其前面加上轉(zhuǎn)義字符 (^) 或引號。 

·        如果某個(gè)命令成功完成操作,則該命令就返回零 (0) 退出代碼或不返回任何退出代碼



> 創(chuàng)建一個(gè)文件 

>> 追加到一個(gè)文件后面 

@ 前綴字符.表示執(zhí)行時(shí)本行在cmd里面不顯示, 可以使用 echo off關(guān)閉顯示 

^ 對特殊符號( > < &)的前導(dǎo)字符. 第一個(gè)只是顯示aaa 第二個(gè)輸出文件bbb 

echo 123456 ^> aaa 

echo 1231231 > bbb 

() 包含命令 

(echo aa & echo bb) 

, 和空格一樣的缺省分隔符號. 

; 注釋,表示后面為注釋 

: 標(biāo)號作用 

│ 管道操作 

; 符號當(dāng)命令相同的時(shí)候可以將不同的目標(biāo)用;隔離開來但執(zhí)行效果不變。如執(zhí)行過程中發(fā)生錯(cuò)誤則只返回錯(cuò)誤報(bào)告但程序還是會(huì)繼續(xù)執(zhí)行


首先, @ 不是一個(gè)命令, 而是DOS 批處理的一個(gè)特殊標(biāo)記符, 僅用于屏蔽命令行回顯. 下面是DOS命令行或批處理中可能會(huì)見到的一些特殊標(biāo)記符:

CR(0D) 命令行結(jié)束符

Escape(1B) ANSI轉(zhuǎn)義字符引導(dǎo)符

Space(20) 常用的參數(shù)界定符

Tab(09) ; = 不常用的參數(shù)界定符

+ COPY命令文件連接符

* ? 文件通配符

"" 字符串界定符

| 命令管道符

< > >> 文件重定向符

@ 命令行回顯屏蔽符

/ 參數(shù)開關(guān)引導(dǎo)符

: 批處理標(biāo)簽引導(dǎo)符

% 批處理變量引導(dǎo)符



其次, :: 確實(shí)可以起到rem 的注釋作用, 而且更簡潔有效; 但有兩點(diǎn)需要注意:

第一, 除了 :: 之外, 任何以 :開頭的字符行, 在批處理中都被視作標(biāo)號, 而直接忽略其后的所有內(nèi)容, 只是為了與正常的標(biāo)號相區(qū)別, 建議使用 goto 所無法識別的標(biāo)號, 即在 :后緊跟一個(gè)非字母數(shù)字的一個(gè)特殊符號.

第二, 與rem 不同的是, ::后的字符行在執(zhí)行時(shí)不會(huì)回顯, 無論是否用echo on打開命令行回顯狀態(tài), 因?yàn)槊罱忉屍鞑徽J(rèn)為他是一個(gè)有效的命令行, 就此點(diǎn)來看, rem 在某些場合下將比 :: 更為適用; 另外, 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è)備名稱時(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...等)

可通過命令 mem/d | find "device" /i 來檢閱你的系統(tǒng)中所加載的設(shè)備

另外, 在DOS系統(tǒng)中, 設(shè)備也被認(rèn)為是一種特殊的文件, 而文件也可以稱作字符設(shè)備; 因?yàn)樵O(shè)備(device)與文件都是使用句柄(handle)來管理的, 句柄就是名字, 類似于文件名, 只不過句柄不是應(yīng)用于磁盤管理, 而是應(yīng)用于內(nèi)存管理而已, 所謂設(shè)備加載也即指在內(nèi)存中為其分配可引用的句柄.


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號