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