bat

後綴是BAT的文件就是批處理文件,是一種文本文件。簡單的說,它的作用就是自動連續執行多條命令,批處理文件的內容就是一條一條的命令。
批處理文件是由一個或一個以上的DOS命令及可執行命令組成的帶有擴展名.BAT的文件。當用戶以批處理文件名爲命令時,DOS會自動依次執行文件中的命令。
批處理文件的特點是一次建立可多次執行。


常用的命令:echo、@、call、pause、rem
echo        --- 表示顯示此命令後的字符
echo off    --- 表示在此語句後所有運行的命令都不顯示命令行本身
@與echo off --- 相像,但它是加在其他命令行的最前面,表示運行時不顯示命令行本身
通俗一點,行首有了@的話,這行命令就不顯示了。
ECHO---顯示方式設置;其中ECHO ON是使以後的命令在執行前先顯示,ECHO OFF是使以後的命令在執行前不顯示,ECHO MASSAGE是不論ECHO的狀態爲ON或OFF,都顯示MASSAGE所指定的信息。
@echo off---不顯示echo off命令本身,不顯示以後各行中的命令本身。
call        --- 調用另一條批處理文件(如果直接調用別的批處理文件,執行完那條文件後將無法執行當前文件後續命令)
psuse       --- 運行此句會暫停,顯示Press any key to continue...等待用戶按任意鍵後繼續
rem         --- 表示此命令後的字符爲解釋行,不執行,只是給自己今後查找用
%           --- 表示參數,參數是指在運行批處理文件時的文件名後加的字符串。變量可以從%0到%9,%0表示文件名本身,字符串用%1到%9順序表示。
比較高級的命令:if、goto、choice、for
if        --- 表示將判斷是否符合規定的條件,從而決定執行不同的命令。
1、輸入判斷
if“參數”==“字符串”  待執行的命令
參數如果等於指定的字符串,則條件成立 ,運行命令,否則運行下一句。
if not “參數”==“字符串”  待執行的命令
2、存在判斷
if exist 文件名  待執行的命令
如果存在指定的文件,則條件成立,運行命令,否則運行下一句。
if not exist 文件名  待執行的命令
3、結果判斷
if errorlevel 數字  帶運行的命令
如果返回碼等於指定的數字,則條件成立,運行命令,否則運行下一句。
if not errorlevel 數字  帶運行的命令
goto      --- 批處理文件運行到這裏將跳到goto所指定的標號處,一般與if配合使用。
標號:用字符串表示,標號所在行不被執行
goto end


:end
echo this is the end
choice    --- 使用此命令可以讓用戶輸入一個字符,從而運行不同的命令。使用時應該加/c:參數
choice /c:dem defrag,mem,end
將提示
defrag,mem,end[D,M,E]?
for       --- 循環命令,只要條件符合,它將多次執行同一命令。
格式 for [%%f] in (集合) do [命令]
只要參數f在指定的集合內,則條件成立,執行命令。


find --- 這是一個搜索命令,用來在文件中搜索特定字符串,通常也作爲條件判斷的鋪墊程序。
type    --- type a.txt,列出a.txt中的內容
more    --- 
more a.txt和type a.txt,利用more命令,可以達到逐屏或逐行顯示的效果;而type命令只能一次把輸出顯示完,最後的結果就是隻能看到末尾部分。
::      --- 這個命令的作用很簡單,它是註釋命令,在批處理腳本中和rem命令等效,它後面的內容在執行時不顯示,也不起任何作用,
因爲它只是註釋,只增加了腳本的可讀性,和C語言中的/*'''''''*/類似。
::是註釋符號,::行爲註釋行,不執行,只是爲了讓程序更清楚,便於維護和修改。
exit    --- 




組合命令:&、&&、||
  組合命令,顧名思義,就是可以把多個命令組合起來當一個命令來執行。
&,它的作用是用來連接N個DOS命令,並把這些命令按順序執行,而不管是否有命令執行失敗。
&&,它可以把前後兩個命令組合起來當一個命令來用,與&命令不同之處在於,它在從前往後依次執行被它連接的幾個命令時會自動判斷是否有某個指令出錯,
一旦發現出錯後將不繼續執行後面剩下的命令。
||,這個命令的用法和&&幾乎一樣,但作用剛好和它相反:利用這種方法在執行多條命令時,當遇到一個執行正確的命令就退出此命令組合,不再繼續執行下面的命令。


應用DOS重定向功能
  DOS的標準輸入輸出通常是在標準設備鍵盤和顯示器上進行的,利用重定向,可以方便地將輸入輸出改向磁盤文件或其它設備。
如在批處理命令執行期間爲了禁止命令或程序執行後輸出信息而擾亂屏幕,可以利用DOS重定向功能把輸出改向NUL設備(NUL不指向任何實際設備):C:\>COPY A.TXT B.TXT > NUL。
命令執行結束不顯示“1 file(s) copied”的信息。有的交互程序在執行時要求很多鍵盤輸入,但有時輸入是固定不變的,爲加快運行速度,可預先建立一個輸入文件,此文件的內容爲程序的鍵盤輸入項


,每個輸入項佔一行。假如有一個程序ZB,其輸入項全部包括在文件IN.DAT中,執行C:\>ZB NUL程序就自動執行。


應用DOS管道功能 
  DOS的管道功能是使一個程序或命令的標準輸出用做另一個程序或命令的標準輸入。如把DEBUG的輸入命令寫入文件AAA,用TYPE命令通過管道功能將AAA的內容傳輸給DEBUG,
在DEBUG執行期間不在從控制檯索取命令參數,從而提高了機器效率。命令爲:C:\>TYPE AAA|DEBUG > BBB
  常用的管道命令:|、>、>>
|命令的作用,就是讓前一命令的輸出當做後一命令的輸入。
>、>>都是輸出重定向命令,就是把前面命令的輸出寫入到一個文件中。這兩個命令的唯一區別,>會清掉原有文件中的內容後把新的內容寫入原文件;
而>>只會另起一行追加新的內容到原文件中,而不會改動其中的原有內容。
  不常用的管道命令:<、>&、<&
<,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤中讀入。
>&,將一個句柄的輸出寫入到另一個句柄的輸入中。
<&,剛好和>&相反,從一個句柄讀取輸入並將其寫入到另一個句柄輸出中。


子程序
  在一個批處理文件可用CALL命令調用另一個批處理文件,當子批處理文件執行結束後,自動返回父批處理文件,繼續向下執行。




批處理中的一些標記符:
+ COPY命令文件連接符
* ?文件通配符
""字符串界定符
|命令管道符
< > >> 文件重定向符
@命令行回顯屏蔽符
/參數開關引導符
:批處理標籤引導符
%批處理變量引導符
call如果不用call而直接調用別的批處理文件,那麼執行完那個批處理文件後將無法返回當前文件並執行當前文件的後續命令。
::起到rem的註釋作用。
rem相當與程序中的註釋。
第一、除了::之外,任何以:開頭的字符行,在批處理中都被視作標號,而直接忽略其後的所有內容,只是爲了與正常的標號相區別,
建議使用goto所無法識別的標號,即在:後緊跟一個非字母數字的一個特殊符號。
第二、與rem不同的是,::後的字符行在執行時不會回顯,無論是否用echo on 打開命令行回顯狀態,因爲命令解釋器不認爲它是一個
有效的命令行,就此點來看,rem在某些場合下將比::更爲適用;另外,rem可以用於config.sys文件。












例一、
ping sz.tencent.com > a.txt
ping sz1.tencent.com >> a.txt
ping sz2.tencent.com >> a.txt
ping sz3.tencent.com >> a.txt
ping sz4.tencent.com >> a.txt
ping sz5.tencent.com >> a.txt
ping sz6.tencent.com >> a.txt
ping sz7.tencent.com >> a.txt
exit
執行這個批處理後,可以在你的當前盤建立一個名爲a.txt的文件,它裏面記錄的信息可以幫助你迅速找到最快的QQ的服務器,從而遠離“從服務器中轉”那一痛苦的過程。這裏
>的意思是把前面命令得到的東西放到後面所給的地方,>>的作用和>的相同,區別是把結果追加到前一行得出的結果的後面,具體的說是下一行,而前面一行命令得出的結果將保留,
這樣可以使這個a.txt文件越來越大。


例二、
if exist C:\zhang.jpg del C:\zhang.jpg
echo Run this....
pause
exit


例三、
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt
pause
exit
先用netstat命令檢查是否有冰河默認的端口7626在活動,並把結果保存到a.txt中。
然後使用type命令列出a.txt中的內容,再在列出的內容中搜索字符串“7626”,發現有的話則提示中了冰河,否則退出。


例四、
if exist C:\find1.txt del C:\del.txt
echo Run this ....
pause
exist


例五、
help > help.txt
more help.txt
del help.txt


例六、
dir 文件://1%/www/user.mdb && copy 文件://1%/www/user.mdb e:\backup\www
如果遠程主機存在user.mdb,則copy到本地e:\backup\www,如果不存在當然就不執行copy了。
If exist 文件://1%/www/user.mdb copy 文件://1%/www/user.mdb e:\backup\www


例七、
dir zhang*.exe || echo Didn't exist file zhang*.exe & pause & exist





























發佈了9 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章