P處理

批處理,也稱爲批處理腳本,英文譯爲BATCH,批處理文件後綴BAT就取的前三個字母。它的構成沒有固定格式,只要遵守以下這條就ok了:每一行可視爲一個命令,每個命令裏可以含多條子命令,從第一行開始執行,直到最後一行結束,它運行的平臺是DOS。批處理有一個很鮮明的特點:使用方便、靈活,功能強大,自動化程度高。我不想讓自己寫的教程枯燥無味,因爲牽纏到代碼(批處理的內容算是代碼吧?)的問題本來就是枯燥的,很少有人能面對滿屏幕的代碼而靜下心來。再說句“閒話”:要學好批處理,DOS基礎一定要牢!當然腦子靈活也是很重要的一方面。  

例一、先給出一個最easy的批處理腳本讓大家和它混個臉熟,將下面的幾行命令保存爲name.bat然後執行(以後文中只給出代碼,保存和執行方式類似):  

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  

是不是都能看的懂?是不是很easy?但它的作用卻是很實用的,執行這個批處理後,可以在你的當前盤建立一個名爲a.txt的文件,它裏面記錄的信息可以幫助你迅速找到速度最快的QQ服務器,從而遠離“從服務器中轉”那一痛苦的過程。這裏>的意思,是把前面命令得到的東西放到後面所給的地方,>>的作用,和>的相同,區別是把結果追加到前一行得出的結果的後面,具體的說是下一行,而前面一行命令得出的結果將保留,這樣可以使這個a.txt文件越來越大(想到如何搞破壞了??)。By the way,這個批處理還可以和其他命令結合,搞成完全自動化判斷服務器速度的東東,執行後直接顯示速度最快的服務器IP,是不是很爽?後面還將詳細介紹。

例二、再給出一個已經過時的例子(a.bat):  

@echo off  
if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif  
a.bat  

爲什麼說這是個過時的例子呢?很簡單,因爲現在已經幾乎沒有人用帶廣告的QQ了(KAO,我的QQ還顯示好友三圍呢!!),所以它幾乎用不上了。但曾經它的作用是不可小窺的:刪除QQ的廣告,讓對話框乾乾淨淨。這裏用的地址是QQ的默認安裝地址,默認批處理文件名爲a.bat,你當然可以根據情況自行修改。在這個腳本中使用了if命令,使得它可以達到適時判斷和刪除廣告圖片的效果,你只需要不關閉命令執行後的DOS窗口,不按CTRL+C強行終止命令,它就一直監視是否有廣告圖片(QQ也再不斷查看自己的廣告是否被刪除)。當然這個腳本佔用你一點點內存,呵呵。  
例三,使用批處理腳本查是否中冰河。腳本內容如下:  

@echo off  
netstat -a -n > a.txt  
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"  
del a.txt  
pause & exit  

這裏利用了netstat命令,檢查所有的網絡端口狀態,只需要你清楚常見木馬所使用的端口,就能很easy的判斷出來是否被人種了冰河。然這不是確定的,因爲冰河默認的端口7626,完全可以被人修改。這裏介紹的只是方法和思路。這裏介紹的是方法和思路稍做改動,就變成可以檢查其他木馬的腳本了,再改動一下,加進去參數和端口及信息列表文件後,就變成自動檢測所有木馬的腳本了。呵呵,是不是很過癮?腳本中還利用了組合命令&&和管道命令|,後面將詳細介紹。  

 

例四,借批處理自動清除系統垃圾,腳本如下:  

@echo off  
if exist c:\windows\temp\*.* del c:\windows\temp\*.*  
if exist c:\windows\Tempor~1\*.* del c:\windows\Tempor~1\*.*  
if exist c:\windows\History\*.* del c:\windows\History\*.*  
if exist c:\windows\recent\*.* del c:\windows\recent\*.*  

將以上腳本內容保存到autoexec.bat裏,每次開機時就把系統垃圾給自動刪除了。這裏需要注意兩點:一、DOS不支持長文件名,所以就出現了Tempor~1這個東東;二、可根據自己的實際情況進行改動,使其符合自己的要求。  

怎麼樣,看到這裏,你對批處理腳本是不是已經有點興趣了?是不是發現自己已經慢慢愛上了這個東東?別高興的太早,愛不是一件簡單的事,它也許能帶給你快樂和幸福,當然也能讓你痛苦的想去跳樓。如果你知道很難還敢繼續的話,I 服了 YOU!繼續努力吧,也許到最後你不一定得到真愛(真的有這可能,愛過的人都知道),但你可以體會到整個愛的過程,就是如此。 酸、苦和辣,有沒有甜天知道。  

爲什麼會把批處理和愛情扯上關係?不是我無聊,也不是因爲這樣寫有趣多少,原因有二:其一,批處理和愛情有很多相同的地方,有些地方我用“專業”的行話解釋不清(我不懷疑自己的表達能力,而是事情本身就不好說清楚),說了=沒說,但用地球人都知道的愛情一比喻(愛情是什麼?我**怎麼知道!!),沒準你心裏一下就亮堂了,事半功倍,何樂而不爲?其二,我這段時間狀態不是很好,感冒發燒頭疼鼻塞,但主要還是感情上精神摧殘,搞的人煩透了,借寫教程之際感慨幾句,大家就全當買狗皮膏藥了,完全可以省略不看(也許還真有點效果----不至於讓你看着看着就睡着了,把頭磕了來找我報銷醫藥費)。說不定下次的教程中大家還會看到楊過、張無忌等金老前輩筆下的英雄們。  

 


看過第一章的朋友,一定對批處理有了初步的印象,知道它到底是用來幹什麼的了。但你知道運用批處理的精髓在哪裏嗎?其實很簡單:思路要靈活!沒有做不到的,只有想不到的。這和愛情就有點不同了,因爲愛情的世界是兩個人的世界,一廂情願不叫愛情(補充:那叫單戀。廢話!)而批處理卻是一個人的天堂,你可以爲所欲爲,沒有達不到的境界!  

批處理看起來雜亂無章,但它的邏輯性之強,絕對不比其他程序語言(如彙編)低,如果你寫的腳本是一堆亂麻,雖然每一行命令都正確,但從頭執行到尾後,不一定得到你想要的結果,也許是一屏幕的Bad command or fail name。這又和愛情有了共同點:按步驟來經營,缺少或增多的步驟都可能導致不想看見的結果。陷入愛河的朋友,相信沒有不肯定這句話的。我的愛情批處理,輸出的結果不是Bad command or fail name,屏幕是這麼顯示的:‘你的愛情不是內部或外部命令,也不是可運行的程序或批處理文件。然後就是光標不停閃動,等待這下一次錯誤的輸入。  

從這一章開始,將由淺入深的介紹批處理中常用的命令,很多常見DOS命令在批處理腳本中有這廣泛的應用,它們是批處理腳本的BODY部分,但批處理比DOS更靈活多樣,更具備自動化。要學好批處理,DOS一定要有比較紮實的基礎。這裏只講述一些比較少用(相對來說)的DOS命令,常用命令如COPY、DIR等就不做介紹了(這些看似簡單的命令實際複雜的很,我怕自己都說不清楚!)。  

例五,先看一個實例。這是一個很有意思的腳本,一個小巧實用的好東東,把批處理“自動化”的特點體現的淋漓盡致。先介紹一下這個腳本的來歷:大家都知道彙編程序(MASM)的上機過程,先要對源代碼進行彙編、連接,然後再執行,而這中間有很多環節需要輸入很多東西,麻煩的很(只有經歷過的朋友才懂得)。如何使這個過程變的簡單呢?在我們搞彙編課程設計時,我“被逼”寫了這個腳本,用起來很爽,呵呵。看看腳本內容:  

@echo off  
::close echo  
cls  
::clean screen  
echo This programme is to make the MASM programme automate  
::display info  
echo Edit by CODERED  
::display info  
echo Mailto me : qqkiller***@sina.com  
::display info  
if "%1"=="" goto usage  
::if input without paramater goto usage  
if "%1"=="/?" goto usage  
::if paramater is "/?" goto usage  
if "%1"=="help" goto usage  
網管網www_bitscn_com


::if paramater is "help" goto usage  
pause  
::pause to see usage  
masm %1.asm  
::assemble the .asm code  
if errorlevel 1 pause & edit %1.asm  
::if error pause to see error msg and edit the code  
link %1.obj & %1  
::else link the .obj file and execute the .exe file  
:usage  
::set usage  
echo Usage: This BAT file name [asm file name]  
echo Default BAT file name is START.BAT  
::display usage  

先不要被這一堆的東西給嚇怕了,靜下心來仔細的看(回想一下第一章中第一段是怎麼寫的!!)。已經給出了每一行命令的解釋,兩個冒號後面的內容爲前一行內容解釋的E文(害怕E文的朋友也不用擔心,都很easy,一看就懂了,實在不懂了不會查詞典啊,這麼懶?),在腳本執行時不顯示,也不起任何作用。倒數第5行行首有一個冒號,可不是筆誤哦!具體作用後面會詳細講到。此腳本中masm和link是彙編程序和連接程序,必須和edit程序以及你要編輯的源代碼(當然還有這個腳本,廢話!)一起在當前目錄中。使用這個批處理腳本,可以最大可能的減少手工輸入,整個過程中只需要按幾下回車鍵,即可實現從彙編源代碼到可執行exe文件的自動化轉換,並具備智能判斷功能:如果彙編時源代碼出現錯誤(彙編不成功),則自動暫停顯示錯誤信息,並在按任意鍵後自動進入編輯源代碼界面;如果源代碼彙編成功,則進行連接,並在連接後自動執行生成的exe文件。另外,由於批處理命令的簡單性和靈活性,這個腳本還具備良好的可改進性,簡單進行修改就可以符合不同朋友的上機習慣。正在學彙編的朋友,一定別忘了實習一下!  

在這個腳本中出現瞭如下幾個命令:@、echo、::、pause、:和goto、%以及if。而這一章就將講述這幾個命令。  

1、@  

這個符號大家都不陌生,email的必備符號,它怎麼會跑到批處理中呢?呵呵,不是它的錯,批處理本來就離不開它,要不就不完美了。它的作用是讓執行窗口中不顯示它後面這一行的命令本身(多麼繞口的一句話!)。呵呵,通俗一點說,行首有了它的話,這一行的命令就不顯示了。在例五中,首行的@echo off中,@的作用就是讓腳本在執行時不顯示後面的echo off部分。這下懂了吧?還是不太懂?沒關係,看完echo命令簡介,自然就懂了。  

2、echo  

中文爲“反饋”、“回顯”的意思。它其實是一個開關命令,就是說它只有兩種狀態:打開和關閉。於是就有了echo on和echo off兩個命令了。直接執行echo命令將顯示當前echo命令狀態(off或on)執行echo off將關閉回顯,它後面的所有命令都不顯示命令本身,只顯示執行後的結果,除非執行echo on命令。在例五中,首行的@命令和echo off命令聯合起來,達到了兩個目的:不顯示echo off命令本身,不顯示以後各行中的命令本身。的確是有點亂,但你要是練習一下的話,3分鐘包會,不會的退錢!  

 


echo命令的另一種用法一:可以用它來顯示信息!如例五中倒數第二行,Default BAT file name is START.BAT將在腳本執行後的窗口中顯示,而echo命令本身不顯示(爲什麼??)。  
echo命令的另一種用法二:可以直接編輯文本文件。例六:  
echo nbtstat -A 192.168.0.1 > a.bat  
echo nbtstat -A 192.168.0.2 >> a.bat  
echo nbtstat -A 192.168.0.3 >> a.bat  

以上腳本內容的編輯方法是,直接是命令行輸入,每行一回車。最後就會在當前目錄下生成一個a.bat的文件,直接執行就會得到結果。

 

PS:俺其他編程啥都不懂.
就懂點P處理:m06:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章