【正文】
這是一篇技術(shù)教程,我會用很簡單的文字表達(dá)清楚自己的意思,你要你識字就能看懂,就能學(xué)到知識。寫這篇教程的目的,是讓每一個看過這些文字的朋友記住一句話:如果愛可以讓事情變的更簡單,那么就讓它簡單吧!看這篇教程的方法,就是慢!慢慢的,如同品一個女人、一杯茗茶,你會發(fā)現(xiàn)很多以前就在眼前的東西突然變的很遙遠(yuǎn),而有些很遙遠(yuǎn)的東西卻又突然回到了眼前。 先概述一下批處理是個什么東東。批處理的定義,至今我也沒能給出一個合適的 眾多高手們也都沒給出反正我不知道 看了我也不一定信服 我是個菜鳥,當(dāng)然就 更不用說了;但我想總結(jié)出一個 “比較合適的 ”,而且我也相信自己可以把它解釋的很清楚,讓更多的菜鳥都知道這是個什么東東,你用這個東東可以干什么事情?;蛟S你會因?yàn)檫@篇文章而 “無條件愛上批處理 ”,那么我的目的就達(dá)到了 我就是要讓你愛上它,我就這么拽,你能怎么著??真的,愛有時候就這么拽,就是這么沒理由,就是這么不要臉!真的! 按照我的理解,批處理的本質(zhì),是一堆 DOS命令按一定順序排列而形成的集合。 OK,never claver and get to business(閑話少說言歸正傳)。批處理,也稱為批 處理腳本,英文譯為 BATCH,批處理文件后綴 BAT 就取的前三個字母。它的構(gòu)成沒有固定格式,只要遵守以下這條就 ok 了:每一行可視為一個命令,每個命令里可以含多條子命令,從第一行開始執(zhí)行,直到最后一行結(jié)束,它運(yùn)行的平臺是DOS。批處理有一個很鮮明的特點(diǎn):使用方便、靈活,功能強(qiáng)大,自動化程度高。我不想讓自己寫的教程枯燥無味,因?yàn)闋坷p到代碼(批處理的內(nèi)容算是代碼吧?)的問題本來就是枯燥的,很少有人能面對滿屏幕的代碼而靜下心來。所以我會用很多簡單實(shí)用的例子讓讀這篇教程的朋友去體會批處理的那四射的魅力,感受它那古靈精怪 的性格,不知不覺中愛上批處理(暈,怎么又是愛?到底批處理和愛有什么關(guān)系?答案:沒有?。?。再說句 “閑話 ”:要學(xué)好批處理, DOS基礎(chǔ)一定要牢!當(dāng)然腦子靈活也是很重要的一方面。 例一、先給出一個最 easy 的批處理腳本讓大家和它混個臉熟,將下面的幾行命令保存為 行(以后文中只給出代碼,保存和執(zhí)行方式類似): ping ping ping ping ping ping ping ping exit 是不是都能看的懂?是不是很 easy?但它的作用卻是很實(shí)用的,執(zhí)行這個批處理后,可以在你的當(dāng)前盤建立一個名為 的文件,它里面記錄的信息可以幫助你迅速找到速度最快的 服務(wù)器,從而遠(yuǎn)離 “從服務(wù)器中轉(zhuǎn) ”那一痛 苦的過程。這里 的意思,是把前面命令得到的東西放到后面所給的地方, 的作用,和 的相同,區(qū)別是把結(jié)果追加到前一行得出的結(jié)果的后面,具體的說是下一行,而前面一行命令得出的結(jié)果將保留,這樣可以使這個 (想到如何搞破壞了??)。 By the way,這個批處理還可以和其他命令結(jié)合,搞成完全自動化判斷服務(wù)器速度的東東,執(zhí)行后直接顯示速度最快的服務(wù)器 IP,是不是很爽?后面還將詳細(xì)介紹。 例二、再給出一個已經(jīng)過時的例子( ): @echo off if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif 為什么說這是個過時的例子呢?很簡單,因?yàn)楝F(xiàn)在已經(jīng)幾乎沒有人用帶廣告的 了( KAO,我的 還顯示好友三圍呢?。。?,所以它幾乎用不上了。但曾經(jīng)它的作用是不可小窺的:刪除 的廣告,讓對話框干干凈凈。這里用的地址是 的默認(rèn)安裝地址,默認(rèn)批處理文件名為 ,你當(dāng)然可以根據(jù)情況自行修改。在這個腳本中使用了 if 命令,使得它可以達(dá)到適時判斷和刪除廣告圖片的效果,你只需要不關(guān)閉命令執(zhí)行后的 DOS窗口,不按 CTRL+C強(qiáng)行終止命令,它就一直監(jiān)視是否有廣告圖片( 也再不斷查看自己的廣告是否被刪除)。當(dāng)然這個腳本占用你一點(diǎn)點(diǎn)內(nèi)存,呵呵。 例三,使用批處理腳本查是否中冰河。腳本內(nèi)容如下: @echo off stat a n type | find 7626 amp。amp。 echo Congratulations! You have infected GLACIER! del pause amp。 exit 這里利用了 stat 命令,檢查所有的網(wǎng) 絡(luò)端口狀態(tài),只需要你清楚常見木馬所使用的端口,就能很 easy的判斷出來是否被人種了冰河。然這不是確定的,因?yàn)楸幽J(rèn)的端口 7626,完全可以被人修改。這里介紹的只是方法和思路。這里介紹的是方法和思路稍做改動,就變成可以檢查其他木馬的腳本了,再改動一下,加進(jìn)去參數(shù)和端口及信息列表文件后,就變成自動檢測所有木馬的腳本了。呵呵,是不是很過癮?腳本中還利用了組合命令 amp。amp。和管道命令 |,后面將詳細(xì)介紹。 例四,借批處理自動清除系統(tǒng)垃圾,腳本如下: @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\*.* 將以上腳本內(nèi)容保存到 ,每次開機(jī)時就把系統(tǒng)垃圾給自動刪除了。這里需 要注意兩點(diǎn):一、DOS不支持長文件名,所以就出現(xiàn)了 Tempor~1這個東東;二、可根據(jù)自己的實(shí)際情況進(jìn)行改動,使其符合自己的要求。 怎么樣,看到這里,你對批處理腳本是不是已經(jīng)有點(diǎn)興趣了?是不是發(fā)現(xiàn)自己已經(jīng)慢慢愛上了這個東東?別高興的太早,愛不是一件簡單的事,它也許能帶給你快樂和幸福,當(dāng)然也能讓你痛苦的想去跳樓。如果你知道很難還敢繼續(xù)的話, I 服了 YOU!繼續(xù)努力吧,也許到最后你不一定得到真愛(真的有這可能,愛過的人都知道),但你可以體會到整個愛的過程,就是如此。 酸、苦和辣,有沒有甜天知道。 為什么會 把批處理和愛情扯上關(guān)系?不是我無聊,也不是因?yàn)檫@樣寫有趣多少,原因有二:其一,批處理和愛情有很多相同的地方,有些地方我用 “專業(yè) ”的行話解釋不清(我不懷疑自己的表達(dá)能力,而是事情本身就不好說清楚),說了 =沒說,但用地球人都知道的愛情一比喻(愛情是什么?我 **怎么知道!?。?,沒準(zhǔn)你心里一下就亮堂了,事半功倍,何樂而不為?其二,我這段時間狀態(tài)不是很好,感冒發(fā)燒頭疼鼻塞,但主要還是感情上精神摧殘,搞的人煩透了,借寫教程之際感慨幾句,大家就全當(dāng)買狗皮膏藥了,完全可以省略不看(也許還真有點(diǎn)效果 不至于讓你看著看著 就睡著了,把頭磕了來找我報銷醫(yī)藥費(fèi))。說不定下次的教程中大家還會看到楊過、張無忌等金老前輩筆下的英雄們。 看過第一章的朋友,一定對批處理有了初步的印象,知道它到底是用來干什么的了。但你知道運(yùn)用批處理的精髓在哪里嗎?其實(shí)很簡單:思路要靈活!沒有做不到的,只有想不到的。這和愛情就有點(diǎn)不同了,因?yàn)閻矍榈氖澜缡莾蓚€人的世界,一廂情愿不叫愛情(補(bǔ)充:那叫單戀。廢話?。┒幚韰s是一個人的天堂,你可以為所欲為,沒有達(dá)不到的境界! 批處理看起來雜亂無章,但它的邏輯性之強(qiáng),絕對不比其他程序語言(如匯編)低,如果你寫的 腳本是一堆亂麻,雖然每一行命令都正確,但從頭執(zhí)行到尾后,不一定得到你想要的結(jié)果,也許是一屏幕的 Bad mand or fail name。這又和愛情有了共同點(diǎn):按步驟來經(jīng)營,缺少或增多的步驟都可能導(dǎo)致不想看見的結(jié)果。陷入愛河的朋友,相信沒有不肯定這句話的。我的愛情批處理,輸出的結(jié)果不是 Bad mand or fail name,屏幕是這么顯示的: ?你的愛情 ?不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件。然后就是光標(biāo)不停閃動,等待這下一次錯誤的輸入。 從這一章開始,將由淺入深的介紹批處理中 常用的命令,很多常見 DOS命令在批處理腳本中有這廣泛的應(yīng)用,它們是批處理腳本的 BODY 部分,但批處理比 DOS更靈活多樣,更具備自動化。要學(xué)好批處理, DOS一定要有比較扎實(shí)的基礎(chǔ)。這里只講述一些比較少用(相對來說)的 DOS 命令,常用命令如 COPY、 DIR等就不做介紹了(這些看似簡單的命令實(shí)際復(fù)雜的很,我怕自己都說不清楚?。?。 例五,先看一個實(shí)例。這是一個很有意思的腳本,一個小巧實(shí)用的好東東,把批處理 “自動化 ”的特點(diǎn)體現(xiàn)的淋漓盡致。先介紹一下這個腳本的來歷:大家都知道匯編程序( MASM)的上機(jī)過程,先要對源代 碼進(jìn)行匯編、連接,然后再執(zhí)行,而這中間有很多環(huán)節(jié)需要輸入很多東西,麻煩的很(只有經(jīng)歷過的朋友才懂得)。如何使這個過程變的簡單呢?在我們搞匯編課程設(shè)計(jì)時,我 “被逼 ”寫了這個腳本,用起來很爽,呵呵??纯茨_本內(nèi)容: @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 : ::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 ::if paramater is help goto usage pause ::pause to see usage masm % ::assemble the .asm code if errorlevel 1 pause amp。 edit % ::if error pause to see error msg and edit the code link % amp。 %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 ::display usage 先不要被這一堆的東西給嚇怕了,靜下心來仔細(xì)的看(回想一下第一章中第一段是怎么寫的?。。?。已經(jīng)給出了每一行命令的解釋,兩個冒號后面的內(nèi)容為前一行內(nèi)容解釋的 E文(害怕 E文的朋友也不用擔(dān)心,都很easy,一看就懂了,實(shí)在不懂了不會查詞典啊,這么懶?),在腳本執(zhí)行時不顯示,也不起任何作用。倒數(shù)第 5行行首有一個冒號,可不是筆誤哦!具體作用后面會 詳細(xì)講到。此腳本中 masm和 link是匯編程序和連接程序,必須和 edit程序以及你要編輯的源代碼(當(dāng)然還有這個腳本,廢話!)一起在當(dāng)前目錄中。使用這個批處理腳本,可以最大可能的減少手工輸入,整個過程中只需要按幾下回車鍵,即可實(shí)現(xiàn)從匯編源代碼到可執(zhí)行 exe 文件的自動化轉(zhuǎn)換,并具備智能判斷功能:如果匯編時源代碼出現(xiàn)錯誤(匯編不成功),則自動暫停顯示錯誤信息,并在按任意鍵后自動進(jìn)入編輯源代碼界面;如果源代碼匯編成功,則進(jìn)行連接,并在連接后自動執(zhí)行生成的 exe 文件。另外,由于批處理命令的簡單性和靈活性,這個腳本還具 備良好的可改進(jìn)性,簡單進(jìn)行修改就可以符合不同朋友的上機(jī)習(xí)慣。正在學(xué)匯編的朋友,一定別忘了實(shí)習(xí)一下! 在這個腳本中出現(xiàn)了如下幾個命令: @、 echo、 ::、 pause、 :和 goto、 %以及 if。而這一章就將講述這幾個命令。 @ 這個符號大家都不陌生, 的必備符號,它怎么會跑到批處理中呢?呵呵,不是它的錯,批處理本來就離不開它,要不就不完美了。它的作用是讓執(zhí)行窗口中不顯示它后面這一行的命令本身(多么繞口的一句話!)。呵呵,通俗一點(diǎn)說,行首有了它的話,這一行的命令就不顯示了。在例五中,首行的 @echo off 中,@的作用就是讓腳本在執(zhí)行時不顯示后面的 echo off 部分。這下懂了吧?還是不太懂?沒關(guān)系,看完 echo命令簡介,自然就懂了。 echo 中文為 “反饋 ”、 “回顯 ”的意思。它其實(shí)是一個開關(guān)命令,就是說它只有兩種狀態(tài):打開和關(guān)閉。于是就有了echo on和 echo off 兩個命令了。直接執(zhí)行 echo命令將顯示當(dāng)前 echo命令狀態(tài)( off或 on)執(zhí)行 echo off將關(guān)閉回顯,它后面的所有命令都不顯示命令本身,只顯示執(zhí)行后的結(jié)果,除非執(zhí)行 echo on命令。在例五中,首行的 @命令和 echo off 命令聯(lián)合起來,達(dá)到了兩個目的:不顯示 echo off 命令本身,