批處理常用特殊符號(hào)
1、@ 命令行回顯屏蔽符
2、% 批處理變量引導(dǎo)符
3、> 重定向符
4、>> 重定向符
5、、>、 重定向符
6、| 命令管道符
7、^ 轉(zhuǎn)義字符
8、 組合命令
9、 組合命令
10、|| 組合命令
11、"" 字符串界定符
12、, 逗號(hào)
13、; 分號(hào)
14、() 括號(hào)
15、! 感嘆號(hào)
16、批處理中可能會(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)符
廢話少說,開講了
1、@ 命令行回顯屏蔽符
這個(gè)字符在批處理中的意思是關(guān)閉當(dāng)前行的回顯。我們從前幾課知道
ECHO OFF可以關(guān)閉掉整個(gè)批處理命令的回顯,但不能關(guān)掉ECHO OFF這個(gè)命令,現(xiàn)在我們?cè)贓CHO OFF這個(gè)命令前加個(gè)@,就可以達(dá)到所有命令均不回顯的要求
2、% 批處理變量引導(dǎo)符
這個(gè)百分號(hào)嚴(yán)格來說是算不上命令的,它只是批處理中的參數(shù)而已(多個(gè)%一起使用的情況除外,以后還將詳細(xì)介紹)。
引用變量用%var%,調(diào)用程序外部參數(shù)用%1至%9等等
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*為命令行傳遞給批處理的參數(shù)
%0 批處理文件本身,包括完整的路徑和擴(kuò)展名
%1 第一個(gè)參數(shù)
%9 第九個(gè)參數(shù)
%* 從第一個(gè)參數(shù)開始的所有參數(shù)
參數(shù)%0具有特殊的功能,可以調(diào)用批處理自身,以達(dá)到批處理本身循環(huán)的目的,也可以復(fù)制文件自身等等。
例:最簡(jiǎn)單的復(fù)制文件自身的方法
copy %0 d:\wind.bat
小技巧:添加行內(nèi)注釋
%注釋內(nèi)容%(可以用作行內(nèi)注釋,不能出現(xiàn)重定向符號(hào)和管道符號(hào))
為什么這樣呢?此時(shí)“注釋內(nèi)容”其實(shí)被當(dāng)作變量,其值是空的,故只起注釋作用,不過這種用法容易出現(xiàn)語法錯(cuò)誤,一般不用。
3、> 重定向符
輸出重定向命令
這個(gè)字符的意思是傳遞并且覆蓋,他所起的作用是將運(yùn)行的結(jié)果傳遞到后面的范圍(后邊可以是文件,也可以是默認(rèn)的系統(tǒng)控制臺(tái))
在NT系列命令行中,重定向的作用范圍由整個(gè)命令行轉(zhuǎn)變?yōu)閱蝹€(gè)命令語句,受到了命令分隔符,,||和語句塊的制約限制。
比如:
使用命令:echo hello >1.txt將建立文件1.txt,內(nèi)容為”hello “(注意行尾有一空格)
使用命令:echo hello>1.txt將建立文件1.txt,內(nèi)容為”hello“(注意行尾沒有空格)
4、>> 重定向符
輸出重定向命令
這個(gè)符號(hào)的作用和>有點(diǎn)類似,但他們的區(qū)別是>>是傳遞并在文件的末尾追加,而>是覆蓋
用法同上
同樣拿1.txt做例子
使用命令:
echo hello > 1.txt
echo world >>1.txt
這時(shí)候1.txt 內(nèi)容如下:
hello
world
5、、>、 重定向符
這三個(gè)命令也是管道命令,但它們一般不常用,你只需要知道一下就ok了,當(dāng)然如果想仔細(xì)研究的話,可以自己查一下資料。(本人已查過,網(wǎng)上也查不到相關(guān)資料)
,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤中讀入。
@echo off
echo 2005-05-01>temp.txt
date temp.txt
del temp.txt
這樣就可以不等待輸入直接修改當(dāng)前日期
>,將一個(gè)句柄的輸出寫入到另一個(gè)句柄的輸入中。
,剛好和>相反,從一個(gè)句柄讀取輸入并將其寫入到另一個(gè)句柄輸出中。
常用句柄:0、1、2,未定義句柄:3—9
1>nul 表示禁止輸出正確的信息
2>nul 表示禁止輸出錯(cuò)誤信息。
其中的1與2都是代表某個(gè)數(shù)據(jù)流輸入輸出的地址(NT CMD 稱之為句柄,MSDOS稱之為設(shè)備)。
句柄0:標(biāo)準(zhǔn)輸入stdin,鍵盤輸入
句柄1:標(biāo)準(zhǔn)輸出stdout,輸出到命令提示符窗口(console,代碼為CON)
句柄2:標(biāo)準(zhǔn)錯(cuò)誤stderr,輸出到命令提示符窗口(console,代碼為CON)
其中的stdin可被重定向,stdout可被>、>>重定向。
我們已經(jīng)知道讀取文本中的內(nèi)容可以用for命令,但如果只需要讀取第一行用for命令就有點(diǎn)麻煩。簡(jiǎn)單的辦法如下:
@echo off
set /p str=%0
echo %str%
pause
運(yùn)行顯示批處理文件自身的第一行:@echo off
6、| 命令管道符
格式:第一條命令 | 第二條命令 [| 第三條命令...]
將第一條命令的結(jié)果作為第二條命令的參數(shù)來使用,記得在unix中這種方式很常見。
例如:
dir c:\|find "txt"
以上命令是:查找C:\所有,并發(fā)現(xiàn)TXT字符串。
FIND的功能請(qǐng)用 FIND /? 自行查看
在不使format的自動(dòng)格式化參數(shù)時(shí),我是這樣來自動(dòng)格式化A盤的
echo y|format a: /s /q /v:system
用過format的都知道,再格盤時(shí)要輸入y來確認(rèn)是否格盤,這個(gè)命令前加上echo y并用|字符來將echo y的結(jié)果傳給format命令
從而達(dá)到自動(dòng)輸入y的目的
(這條命令有危害性,測(cè)試時(shí)請(qǐng)慎重)
7、^ 轉(zhuǎn)義字符
^是對(duì)特殊符號(hào),>,的前導(dǎo)字符,在命令中他將以上3個(gè)符號(hào)的特殊功能去掉,僅僅只把他們當(dāng)成符號(hào)而不使用他們的特殊意義。
比如
結(jié)果則是:test > 1.txt
他沒有追加在1.txt里,呵呵。只是顯示了出來
另外,此轉(zhuǎn)義字符還可以用作續(xù)行符號(hào)。
舉個(gè)簡(jiǎn)單的例子:
@echo off
echo 英雄^
是^
好^
男人
pause
不用多說,自己試一下就明白了。
為什么轉(zhuǎn)義字符放在行尾可以起到續(xù)行符的作用呢?原因很簡(jiǎn)單,因?yàn)槊啃心┪策€有一個(gè)看不見的符號(hào),即回車符,轉(zhuǎn)義字符位于行尾時(shí)就讓回車符失效了,從而起到了續(xù)行的作用。
8、 組合命令
語法:第一條命令 第二條命令 [ 第三條命令...]
、、||為組合命令,顧名思義,就是可以把多個(gè)命令組合起來當(dāng)一個(gè)命令來執(zhí)行。這在批處理腳本里是允許的,而且用的非常廣泛。因?yàn)榕幚碚J(rèn)行不認(rèn)命令數(shù)目。
這個(gè)符號(hào)允許在一行中使用2個(gè)以上不同的命令,當(dāng)?shù)谝粋€(gè)命令執(zhí)行失敗了,也不影響后邊的命令執(zhí)行。
這里兩邊的命令是順序執(zhí)行的,從前往后執(zhí)行。
比如:
dir z:\ dir y:\ dir c:\
以上命令會(huì)連續(xù)顯示z,y,c盤的內(nèi)容,不理會(huì)該盤是否存在
9、 組合命令
語法:第一條命令 第二條命令 [ 第三條命令...]
用這種方法可以同時(shí)執(zhí)行多條命令,當(dāng)碰到執(zhí)行出錯(cuò)的命令后將不執(zhí)行后面的命令,如果一直沒有出錯(cuò)則一直執(zhí)行完所有命令
這個(gè)命令和上邊的類似,但區(qū)別是,第一個(gè)命令失敗時(shí),后邊的命令也不會(huì)執(zhí)行
dir z:\ dir y:\ dir c:\
10、|| 組合命令
語法:第一條命令 || 第二條命令 [|| 第三條命令...]
用這種方法可以同時(shí)執(zhí)行多條命令,當(dāng)一條命令失敗后才執(zhí)行第二條命令,當(dāng)碰到執(zhí)行正確的命令后將不執(zhí)行后面的命令,如果沒有出現(xiàn)正確的命令則一直執(zhí)行完所有命令;
提示:組合命令和重定向命令一起使用必須注意優(yōu)先級(jí)
管道命令的優(yōu)先級(jí)高于重定向命令,重定向命令的優(yōu)先級(jí)高于組合命令
問題:把C盤和D盤的文件和文件夾列出到a.txt文件中??蠢?br />
dir c:\ dir d:\ > a.txt
這樣執(zhí)行后a.txt里只有D盤的信息!為什么?因?yàn)榻M合命令的優(yōu)先級(jí)沒有重定向命令的優(yōu)先級(jí)高!所以這句在執(zhí)行時(shí)將本行分成這兩部分:dir c:\和dir d:\ > a.txt,而并不是如你想的這兩部分:dir c:\ dir d:\和> a.txt。要使用組合命令達(dá)到題目的要求,必須得這么寫:
dir c:\ > a.txt dir d:\ >> a.txt
這樣,依據(jù)優(yōu)先級(jí)高低,DOS將把這句話分成以下兩部分:dir c:\ > a.txt和dir d:\ >> a.txt。例十八中的幾句的差別比較特殊,值得好好研究體會(huì)一下。
當(dāng)然這里還可以利用命令(自己想一下道理哦):
dir c:\ > a.txt dir d:\ >> a.txt
[這個(gè)也可以用 dir c:\;d:\ >>a.txt 來實(shí)現(xiàn)]
11、"" 字符串界定符
雙引號(hào)允許在字符串中包含空格,進(jìn)入一個(gè)特殊目錄可以用如下方法
cd "program files"
cd progra~1
cd pro*
以上三種方法都可以進(jìn)入program files這個(gè)目錄
12、, 逗號(hào)
逗號(hào)相當(dāng)于空格,在某些情況下“,”可以用來當(dāng)做空格使
比如
dir,c:\
13、; 分號(hào)
分號(hào),當(dāng)命令相同時(shí),可以將不同目標(biāo)用;來隔離,但執(zhí)行效果不變,如執(zhí)行過程中發(fā)生錯(cuò)誤,則只返回錯(cuò)誤報(bào)告,但程序仍會(huì)執(zhí)行。(有人說不會(huì)繼續(xù)執(zhí)行,其實(shí)測(cè)試一下就知道了)
比如:
dir c:\;d:\;e:\;z:\
以上命令相當(dāng)于
dir c:\
dir d:\
dir e:\
dir f:\
如果其中z盤不存在,運(yùn)行顯示:系統(tǒng)找不到指定的路徑。然后終止命令的執(zhí)行。
例:dir c:\;d:\;e:\1.txt
以上命令相當(dāng)于
dir c:\
dir d:\
dir e:\1.txt
其中文件e:\1.txt不存在,但e盤存在,有錯(cuò)誤提示,但命令仍會(huì)執(zhí)行。
為什么?如果目標(biāo)路徑不存在,則終止執(zhí)行;如果路徑存在,僅文件不存在,則繼續(xù)執(zhí)行。
就說這些了!各位有什么意見請(qǐng)回貼!有什么疑問請(qǐng)到BAT交流區(qū)發(fā)貼!下一節(jié)改進(jìn)!
14、() 括號(hào)
小括號(hào)在批處理編程中有特殊的作用,左右括號(hào)必須成對(duì)使用,括號(hào)中可以包括多行命令,這些命令將被看成一個(gè)整體,視為一條命令行。
括號(hào)在for語句和if語句中常見,用來嵌套使用循環(huán)或條件語句,其實(shí)括號(hào)()也可以單獨(dú)使用,請(qǐng)看例子。
例:
命令:echo 1 echo 2 echo 3
可以寫成:
(
echo 1
echo 2
echo 3
)
上面兩種寫法效果一樣,這兩種寫法都被視為是一條命令行。
注意:這種多條命令被視為一條命令行時(shí),如果其中有變量,就涉及到變量延遲的問題。
15、! 感嘆號(hào)
沒啥說的,在變量延遲問題中,用來表示變量,即%var%應(yīng)該表示為!var!,請(qǐng)看前面的setlocal命令介紹。
您可能感興趣的文章:- 如何讓“gt;”顯示出來批處理(dos)中的轉(zhuǎn)義符號(hào)
- 批處理中常用的符號(hào)總結(jié)
- 批處理重命名特殊文件名的代碼
- cmd批處理常用符號(hào)詳解
- 批處理判斷是否特殊字符的實(shí)現(xiàn)代碼
- 批處理命令教學(xué)之管道符號(hào)(|)