《批處理入門手冊》
二.常用網(wǎng)絡(luò)命令和符號(hào)篇
-----------------------------------------------------------------------------------------------------
2.2學(xué)習(xí)常用的特殊符號(hào)
學(xué)習(xí)要點(diǎn):
1.>、>>重定向符
2.| 命令管道符
3.&、&&、|| 組合命令
4.^ 轉(zhuǎn)義字符
5.% 變量引導(dǎo)符
6."" 界定符
-----------------------------------------------------------------------------------------------------
一、重定向符 >、>>
> 重定向符, 意思是傳遞并且覆蓋,它所起的作用是將運(yùn)行的結(jié)果傳遞到后面的范圍(后邊可以是文件,也可以是默
認(rèn)的系統(tǒng)控制臺(tái),即命令提示符)。
例1
echo hello120 >1.txt
新建立文件 1.txt,內(nèi)容為”hello120” (注意:行尾有一空格,文件后有一空行)
例2
(echo hello120)>1.txt 新建立文件 1.txt,內(nèi)容為”hello120” (注意:行尾無空格,但文件后有一空行)
>1.txt echo hello120 新建立文件 1.txt,內(nèi)容為”hello120” (注意:行尾無空格,但文件后有一空行)
例3
>1.txt <nul set /p=hello120 或>1.txt set /p=hello120<nul
新建立文件 1.txt,內(nèi)容為”hello120” (注意:行尾無空格,且文件后也無空行)
注意:
如果上面的例子中1.txt原來有內(nèi)容的話,在使用了> 重定向符命令后,將會(huì)被新的內(nèi)容覆蓋掉,這個(gè)一定要注意!
-----------------------------------------------------------------------------------------------------
>> 重定向符 將命令的輸出結(jié)果追加到其后面的設(shè)備中去。這個(gè)符號(hào)的作用和>有點(diǎn)類似,但他們是有區(qū)別的 >>是
傳遞并在文件的末尾追加,而>是覆蓋。用法同>一樣的。
例1
echo hello120 >>1.txt
如果1.txt不存在,則新建立文件 1.txt,內(nèi)容為”hello120 ”;如果1.txt存在,則把內(nèi)容為”hello120 ”追加
到其文末尾。
例2
echo hello> 1.txt
echo world>>1.txt
這時(shí)候 1.txt內(nèi)容如下:
hello
world
-----------------------------------------------------------------------------------------------------
二、命令管道符 |
表示把在它之前的命令或語句的執(zhí)行結(jié)果作為在它之后的命令或語句的處理對象,簡而言之,就是把它之前的輸出作
為它之后的輸入。
例1
tasklist | find /i "qq.exe" && taskkill /f /im qq.exe
將tasklist(進(jìn)程列表)用傳遞符"|" 傳遞給find 命令,執(zhí)行查找QQ的進(jìn)程。
例2
echo Y|rd /s c:\abc
通過管道命令|將echo y 的結(jié)果傳給rd /s c:\abc 命令,從而達(dá)到自動(dòng)輸入y 的目的。
★注意,管道命令 | 的輸入方法,shift鍵 \
-----------------------------------------------------------------------------------------------------
三、組合命令 &、&&、||
&、&&、|| 為組合命令,顧名思義,就是可以把多個(gè)命令組合起來當(dāng)一個(gè)命令來執(zhí)行。
&符號(hào)允許同時(shí)執(zhí)行多條命令,當(dāng)?shù)谝粋€(gè)命令執(zhí)行失敗了,也不影響后邊的命令執(zhí)行。這里 & 兩邊的命令是順序執(zhí)行
的,從前往后執(zhí)行。
格式:第一條命令 & 第二條命令 [& 第三條命令...]
例1
dir z:\ & dir y:\ & dir c:\
以上命令會(huì)連續(xù)顯示z,y,c 盤的內(nèi)容,不理會(huì)該盤是否存在。
-----------------------------------------------------------------------------------------------------
&&符號(hào)允許同時(shí)執(zhí)行多條命令,當(dāng)碰到執(zhí)行出錯(cuò)的命令后將不再執(zhí)行后面的命令,如果一直沒有出錯(cuò)則一直執(zhí)行完
所有命令。
格式:第一條命令 && 第二條命令 [&& 第三條命令...]
例2
dir z:\ && dir y:\ && dir c:\
這個(gè)命令和上面的類似,但區(qū)別是,前一個(gè)命令執(zhí)行失敗時(shí),后邊的命令就不會(huì)再執(zhí)行了。
-----------------------------------------------------------------------------------------------------
||符號(hào)允許同時(shí)執(zhí)行多條命令,當(dāng)一條命令執(zhí)行失敗后才執(zhí)行第二條命令,當(dāng)碰到執(zhí)行正確的命令后將不執(zhí)行后面
的命令,如果沒有出現(xiàn)正確的命令則一直執(zhí)行完所有命令。
格式:第一條命令 || 第二條命令 [|| 第三條命令...]
例3
tasklist | find /i "qq.exe" && taskkill /f /im qq.exe || echo 你開了QQ?我不信
通過&&和||兩個(gè)符號(hào)可以認(rèn)為把上例分成了三個(gè)命令:
第一個(gè)命令::tasklist | find /i "qq.exe"
第二個(gè)命令:taskkill /f /im qq.exe
第三個(gè)命令:echo 你開了QQ?我不信
這里我們分析一下,
如果找不到QQ進(jìn)程,即第一個(gè)命令執(zhí)行失敗,則 && 不會(huì)執(zhí)行第二個(gè)命令:taskkill命令,由于taskkill 命令沒有
執(zhí)行,視作第二個(gè)命令執(zhí)行失敗,則 || 將會(huì)執(zhí)行第三個(gè)命令:echo 命令。
如果找到QQ進(jìn)程,即第一個(gè)命令執(zhí)行成功,則 && 將會(huì)執(zhí)行第二個(gè)命令:taskkill命令,由于第二個(gè)命令執(zhí)行成功,
|| 將不會(huì)執(zhí)行第三個(gè)命令:echo 命令。
-----------------------------------------------------------------------------------------------------
★管道命令 | | 的輸入方法,輸入兩次shift鍵 \
★組合命令和重定向命令、管道命令一起使用必須注意優(yōu)先級。管道命令的優(yōu)先級高于重定向命令,重定向命令的優(yōu)
先級高于組合命令。
思考:
把C 盤和 D 盤的文件和文件夾列出到a.txt 文件中。
你可能馬上的寫出了下面的命令:
dir c:\ && dir d:\ > a.txt
這樣執(zhí)行后a.txt 里只有D盤的信息!為什么?因?yàn)榻M合命令的優(yōu)先級沒有重定向命令的優(yōu)先級高!所以命令在執(zhí)
行時(shí)將被分成兩部分:dir c:\和dir d:\ > a.txt
這里要使用組合命令&&達(dá)到題目的要求,我們可以這樣寫:
dir c:\ > a.txt && dir d:\ >> a.txt
這樣,依據(jù)優(yōu)先級高低,DOS 將把這句話分成以下兩部分:dir c:\ > a.txt 和dir d:\ >> a.txt
當(dāng)然,我們也可以這樣寫:
dir c:\ > a.txt & dir d:\ >> a.txt
-----------------------------------------------------------------------------------------------------
四、轉(zhuǎn)義字符 ^
一般而言,^ 以轉(zhuǎn)義字符的身份出現(xiàn)。
因?yàn)樵赾md環(huán)境中,有些字符具備特殊功能,如 >、>>表示重定向,| 表示管道,&、&&、|| 表示語句連接……它
們都有特定的功能,如果需要把它們作為字符輸出的話,echo >、echo | ……之類的寫法就會(huì)出錯(cuò)——cmd解釋器會(huì)
把它們作為具有特殊功能的字符對待,而不會(huì)作為普通字符處理,這個(gè)時(shí)候,就需要對這些特殊字符做轉(zhuǎn)義處理:在
每個(gè)特殊字符前加上轉(zhuǎn)義字符^。
因此,要輸出這些特殊字符,就需要用 echo ^>、echo ^|、echo ^|^|、echo ^^……之類的格式來處理;
另外,此轉(zhuǎn)義字符還可以用作續(xù)行符號(hào)。
例1
@echo off
echo 這是^
一個(gè)^
句子
Pause
為什么轉(zhuǎn)義字符放在行尾可以起到續(xù)行符的作用呢?原因很簡單,因?yàn)槊啃心┪策€有一個(gè)看不見的符號(hào),即回車
符,轉(zhuǎn)義字符位于行尾時(shí)就讓回車符失效了,從而起到了續(xù)行的作用。
-----------------------------------------------------------------------------------------------------
五、變量引導(dǎo)符 %
①當(dāng)百分號(hào)成對出現(xiàn),并且其間包含非特殊字符時(shí),一般做變量引用處理,比如:%var%、%str%
例1
@echo off
set str=abc
echo 變量 str 的值是: %str%
pause
在屏幕上將顯示這樣的結(jié)果:
變量 str 的值是: abc
按任意鍵繼續(xù)...
-----------------------------------------------------------------------------------------------------
②另外,百分號(hào)作為變量引用還有一種特殊形式,那就是對形式參數(shù)的引用,此時(shí),單個(gè)百分號(hào)后面緊跟0~9這10
個(gè)數(shù)字,如%0、%1、%2 。。。
%0 表示批處理文件本身,包括完整的路徑和擴(kuò)展名
%1至%9 表示第一個(gè)參數(shù)至第九個(gè)參數(shù)
例2
假設(shè)該批處理文件名:w3cschool.bat
@echo off
echo %0
echo %1
echo %2
echo %3
執(zhí)行該命令w3cschool.bat w3cschool 歡迎你 學(xué)習(xí)編程
輸出結(jié)果為
w3cschool.bat
w3cschool
歡迎你
學(xué)習(xí)編程
-----------------------------------------------------------------------------------------------------
③出現(xiàn)在 set /a 語句中時(shí),表示兩數(shù)相除取余數(shù),也就是所謂的模運(yùn)算,它在命令行窗口和批處理文件中的寫法
略有差異:在命令行窗口中,只需要單個(gè)的%,在批處理文件中,需要連續(xù)兩個(gè)百分號(hào),寫成%%。
例如:在命令行窗口中,運(yùn)行 set /a num=4%2 ,則結(jié)果將顯示0,因?yàn)?除以2的余數(shù)為0;
如果保存為批處理文件,則此語句將略有改變:
例3
@echo off
set /a num=4%%2
echo 4除以2的余數(shù)為 %num%
pause
-----------------------------------------------------------------------------------------------------
④轉(zhuǎn)義符號(hào):如果要顯示%本身時(shí),需要在前面用%來轉(zhuǎn)義。
例4
@echo off
echo 一個(gè)百分號(hào):%%
echo 兩個(gè)百分號(hào):%%%%
echo 三個(gè)百分號(hào):%%%%%%
pause
-----------------------------------------------------------------------------------------------------
六、界定符 ""
①在表示帶有空格或特殊符號(hào)的路徑時(shí)常要用""來將路徑括起來。
例1
cd /d cd "d:\program files\^%*abc"
因?yàn)槁窂街袔в锌崭窈吞厥夥?hào),所以要用""將路徑括起來。
-----------------------------------------------------------------------------------------------------
②表示其中的內(nèi)容是一個(gè)完整的字符串。
例2
@echo off
set "var=abc 123"
echo %var%
pause
這里表示變量var的值為字符串“abc 123”。
由于符號(hào)還有很多,在此就只說了上面幾個(gè)常用的,有空的話可以觀看論壇中的《批處理常用符號(hào)詳解》,
原文地址:http://www.bathome.cn/viewthread.php?tid=1205
-----------------------------------------------------------------------------------------------------
Januapr編輯整理于2009-09-13 星期日12:09:22.68
更多建議: