版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、從零學(xué)批處理在很多人印象中,DOS時(shí)代已經(jīng)遠(yuǎn)去了,在擁有豪華界面和強(qiáng)大功能的Windows時(shí)代,很少有人去用DOS的方法來(lái)解決一些問(wèn)題,或者用DOS命令去玩電腦。其實(shí)在Windows時(shí)代,DOS仍然有著非常巨大的用處??粗笪r們把簡(jiǎn)單的DOS命令寫(xiě)成批處理就可以自動(dòng)進(jìn)行網(wǎng)絡(luò)入侵、清除病毒、恢復(fù)系統(tǒng)大大簡(jiǎn)化某些工作,這一定讓你羨慕不已了吧?本文就教你如何去學(xué)習(xí)和使用批處理,如何讓自己也成為一名來(lái)自DOS時(shí)代的大蝦。一、初識(shí)批處理:“批處理”一詞來(lái)源于上個(gè)世紀(jì)的60年代,批處理技術(shù)最早被應(yīng)用在早期的操作系統(tǒng)的設(shè)計(jì)上。當(dāng)時(shí)的計(jì)算機(jī)系統(tǒng)非常昂貴,為了提高資源利用律,增加系統(tǒng)的吞吐量,人們?cè)O(shè)計(jì)了一種可以
2、按照某種順序依次將作業(yè)從外存中調(diào)入內(nèi)存去執(zhí)行的操作系統(tǒng),這就是多道批處理系統(tǒng),好處是可以在作業(yè)調(diào)度中不需要人工參與,實(shí)現(xiàn)了簡(jiǎn)單的自動(dòng)化。多道批處理的形成標(biāo)志了操作系統(tǒng)的誕生。小知識(shí):“作業(yè)”指需要使用計(jì)算機(jī)來(lái)完成的某項(xiàng)工作。早期的“外存”一般為磁帶,接著出現(xiàn)了軟盤(pán),現(xiàn)代的外存除了包括早期的外,還包括硬盤(pán)、光盤(pán)、移動(dòng)存儲(chǔ)設(shè)備等?!皟?nèi)存”只指插在計(jì)算機(jī)主板上的內(nèi)存條。在后來(lái)出現(xiàn)的DOS操作系統(tǒng)里,這種自動(dòng)化被更好的體現(xiàn)出來(lái)。DOS系統(tǒng)允許用戶(hù)使用任何一種文本編輯器將多條DOS命令按某種順序以ASC文本的形式寫(xiě)入一個(gè)擴(kuò)展名為.bat(MS-DOS批處理)或.cmd(Windows NT 命令腳本)的
3、文件中,當(dāng)在命令提示符下鍵入文件名并回車(chē),或者在Windows環(huán)境中雙擊該文件時(shí),系統(tǒng)會(huì)調(diào)用或cmd.exe由前向后依次來(lái)自動(dòng)執(zhí)行這些命令。這個(gè)命令的集合就是批處理,它是DOS下可執(zhí)行文件的一種。一個(gè)完整的批處理由至少一條可以被正確執(zhí)行的DOS命令組成,可見(jiàn)DOS命令是批處理的核心。小知識(shí):“命令提示符”是指在DOS系統(tǒng)下或DOS窗口中出現(xiàn)的X:>符號(hào),X指當(dāng)前的驅(qū)動(dòng)器號(hào)。在命令提示符后可以直接輸入命令,回車(chē)后該命令就被執(zhí)行。DOS下的可執(zhí)行文件,除了批處理專(zhuān)用的.bat和.cmd以外,還有.exe和.com,這四種文件是直接可以DOS被執(zhí)行的。也有一種說(shuō)法,把批處理稱(chēng)做“腳本”,或者合
4、起來(lái)稱(chēng)為“批處理腳本”,這也是合理的。批處理和腳本有一個(gè)共同點(diǎn),他們都是通過(guò)一組命令的正確執(zhí)行來(lái)實(shí)現(xiàn)自身價(jià)值的,不同之處在于,批處理使用的全部為DOS命令,而在腳本中可以使用應(yīng)用程序的指令;腳本的程序性強(qiáng)于批處理,批處理的程序結(jié)構(gòu)比較簡(jiǎn)單。小知識(shí):“指令”是指組成某一命令的最小單位,其執(zhí)行過(guò)程不能再分。一條命令由多多條指令組成。打開(kāi)任何一種文本編輯器如記事本,在里面寫(xiě)下如下代碼,然后保存為一個(gè)擴(kuò)展名為.bat或.cmd的文件,就形成了一個(gè)批處理。例一,01.bat echo offif exist C:name.gif del C:name.gifexit注意:在下文的介紹中,部分例子只給出關(guān)
5、鍵代碼。該批處理的作用,是檢查是否存在C:name.gif文件,如果存在就刪除該文件。整個(gè)代碼分為三行,因此可以理解為有三條DOS命令組成的,而第一條命令又由多條子命令組成。整段代碼的執(zhí)行順序由命令開(kāi)始到exit命令結(jié)束。注意:如果一條命令是用連接符號(hào)將多個(gè)命令連接而成的復(fù)合命令,則稱(chēng)該復(fù)合命令中的每一條命令為它的“子命令”。為了進(jìn)一步說(shuō)明批處理的結(jié)構(gòu),再用一個(gè)例子初步介紹批處理。例二,02.bat:echo off & clsif "%1"="" goto usageif "%1"="/?" goto u
6、sageif "%1"="help" goto usagepausemasm %1.asmif errorlevel 1 pause & edit %1.asmlink %1.obj & %1:usage echo Usage: This BAT file name source filenameecho Default BAT file name is START.BAT匯編程序從源代碼到可執(zhí)行文件必須經(jīng)過(guò)匯編和連接兩個(gè)過(guò)程,這就是一個(gè)將匯編程序源代碼自動(dòng)轉(zhuǎn)換為.exe可執(zhí)行文件的批處理。2、3、4行和最后兩行的作用是顯示程序用法幫助,
7、中間是程序主體部分。首先用masm程序?qū)?asm源代碼進(jìn)行匯編,如果正確,再用link命令對(duì)匯編生成的.obj目標(biāo)文件進(jìn)行連接,從而生成.exe可執(zhí)行文件。如果在匯編時(shí)出錯(cuò),則打開(kāi)源代碼進(jìn)行修改。在本例中使用了masm.exe、link.exe兩個(gè)匯編的專(zhuān)用程序??梢?jiàn),批處理的應(yīng)用是十分靈活的,結(jié)合其他應(yīng)用程序,只要是想的到的它都能做的到。小知識(shí):可以在鍵盤(pán)上按下Ctrl+C組合鍵來(lái)強(qiáng)行終止一個(gè)批處理的執(zhí)行過(guò)程。由于功能強(qiáng)大的DOS操作系統(tǒng)由它的所有命令組成,所有的DOS命令又都可以被用在批處理中,各命令的使用方式、參數(shù)等都和單獨(dú)使用該命令時(shí)一樣,所以決定了批處理可以完成所有DOS能完成的工作
8、,還具備了DOS沒(méi)有的優(yōu)勢(shì):可以讓命令按順序自動(dòng)執(zhí)行。所以在Windows時(shí)代,批處理仍然可以在各種場(chǎng)合發(fā)揮作用,甚至有時(shí)利用批處理可以大大簡(jiǎn)化工作過(guò)程,提高工作效率。用好用活批處理,完全可以讓你的電腦操作上一個(gè)新的臺(tái)階,老樹(shù)也可以開(kāi)新花。二、常用批處理命令:各個(gè)常用命令批處理的核心,是各種DOS命令,以及如何將它們巧妙組合,這需要讀者朋友有一定的DOS基礎(chǔ),有靈活的思路和清晰的頭腦,至少讀者應(yīng)該知道并且用過(guò)一些最基本的DOS內(nèi)部命令,因?yàn)樗性谂幚碇袑?zhuān)用的命令都是DOS的內(nèi)部命令。下面本文將分三類(lèi)由簡(jiǎn)單到復(fù)雜來(lái)介紹常用的批處理命令。小知識(shí):“內(nèi)部命令”是指無(wú)程序體的命令,這些命令在任何DO
9、S環(huán)境都可以執(zhí)行,它們被包含在或cmd.exe文件里,如例二中的echo、if、pause、goto等都是內(nèi)部命令。在命令提示符下輸入help后回車(chē),就可以看到常用的內(nèi)部命令?!巴獠棵睢毙枰凶约邯?dú)立的程序體,如例二中的edit命令就是外部命令,它們的程序體分別是edit.exe。而masm.exe和link.exe是應(yīng)用程序,只要在DOS中可以運(yùn)行,就可以把任何應(yīng)用程序當(dāng)作DOS命令來(lái)使用?!九幚淼幕久睢俊cho、:和rem、pause、call、:和goto、setlocal和endlocal批處理命令中很多是基本命令,它們?cè)谂幚碇袘?yīng)用十分普遍,幾乎任何一個(gè)批處理中都可以找到它
10、們的蹤跡。下面將依次介紹這些命令。1、命令。符號(hào)是E-mail的專(zhuān)用符號(hào),它在批處理中的作用是讓系統(tǒng)在執(zhí)行批處理命令時(shí)不顯示該行命令本身。通俗一點(diǎn)說(shuō),當(dāng)某一行命令最前面使用了該名,這一行的命令就不在執(zhí)行過(guò)程中顯示了。在例一首行的echo off中,的作用就是讓批處理在執(zhí)行時(shí)不顯示后面的echo off部分。請(qǐng)讀者結(jié)合后面的echo命令理解使用。2、echo命令。echo命令是一個(gè)開(kāi)關(guān)命令,它只有on和off兩中狀態(tài),一般出現(xiàn)在批處理第一行中,它的作用是保證批處理在執(zhí)行時(shí)不顯示它后面所有命令本身,只顯示執(zhí)行中的結(jié)果或其他信息,用法為:ECHOON|OFF。可見(jiàn),echo命令和命令的區(qū)別在于前者關(guān)
11、閉了所有命令本身,而后者只關(guān)閉其中一樣。例一第一行中,將echo命令和命令結(jié)合起來(lái)使用,達(dá)到了兩個(gè)目的:不顯示echo off命令本身,不顯示以后各行中的命令本身。echo命令還有其他特別的用法,比如用來(lái)在批處理執(zhí)行過(guò)程中顯示一段信息,用法為:ECHO消息內(nèi)容,見(jiàn)如例二中最后兩行,echo后面的所有內(nèi)容將被顯示到屏幕上。還可以結(jié)合管道命令將顯示的信息寫(xiě)進(jìn)某個(gè)文件中,這樣就可以使用echo命令來(lái)直接編輯文本文件了。后面將詳細(xì)介紹。3、:和rem命令。:和rem命令的作用和用法都完全一樣,用來(lái)在批處理中做注釋?zhuān)黾映绦虻目勺x性。它們的用法很簡(jiǎn)單,直接將注釋內(nèi)容寫(xiě)到:或rem后面就可以了。注釋的內(nèi)容
12、可以為任意ASC字符(甚至一條命令),它們是不會(huì)在執(zhí)行時(shí)顯示出來(lái),或被執(zhí)行的。但需注意的是,使用:或rem命令做注釋?zhuān)话愣际橇硖嵋恍衼?lái)寫(xiě)的,這樣顯得規(guī)范且不易出錯(cuò)。4、pause命令。該命令在批處理中使用十分廣泛,其作用是暫停批處理的執(zhí)行,直到用戶(hù)按下鍵盤(pán)上的任意鍵(Break鍵除外)。批處理在執(zhí)行過(guò)程中顯示的所有信息都是一閃而過(guò)的,只有當(dāng)用戶(hù)暫停執(zhí)行時(shí),才可以看到當(dāng)前屏幕上的信息。當(dāng)程序要讓用戶(hù)看一段信息,或要給用戶(hù)時(shí)間去考慮某個(gè)問(wèn)題的時(shí)候,就可以在這里加上一個(gè)pause,批處理執(zhí)行到這里時(shí)將顯示“按任意鍵繼續(xù)”的信息。用法很簡(jiǎn)單,直接在要暫停的地方使用pause命令即可,見(jiàn)例二中paus
13、e用法。注意,如果要讓pause命令執(zhí)行后的“請(qǐng)按任意鍵繼續(xù)”的提示不出現(xiàn),可以這么些pause >nul。同理其他命令執(zhí)行后的提示如果不想顯示,都可以這么寫(xiě),在后面跟上>nul即可。5、call命令。該命令是用來(lái)從一個(gè)批處理中調(diào)用另一個(gè)批處理的,用法為:CALL 驅(qū)動(dòng)器路徑批處理名參數(shù)。使用此命令,可以實(shí)現(xiàn)多個(gè)批處理互相調(diào)用,類(lèi)似于程序中各個(gè)模塊之間的互相調(diào)用。例如有兩個(gè)批處理名分別為01.bat和02.cmd,在01.bat里有如下命令:call 02.cmd name.txt01.bat執(zhí)行到此句時(shí),自動(dòng)停止后面命令的執(zhí)行,而轉(zhuǎn)到執(zhí)行02.cmd,name.txt作為02.c
14、md的參數(shù)。關(guān)于批處理中使用參數(shù)的詳細(xì)用法,后面將詳細(xì)介紹。6、:和goto命令。這是兩個(gè)成對(duì)出現(xiàn)的命令,在任何一個(gè)批處理中有多少個(gè):就一定至少有多少個(gè)gogo。goto命令的作用,是告訴程序并不按順序向下執(zhí)行,而是要跳轉(zhuǎn)到另一個(gè)地方,而:標(biāo)識(shí)符則唯一標(biāo)記了goto命令要跳轉(zhuǎn)的地址。簡(jiǎn)單來(lái)說(shuō),goto是個(gè)跳轉(zhuǎn)命令,而:是一個(gè)標(biāo)簽。當(dāng)程序運(yùn)行到goto時(shí),將自動(dòng)跳轉(zhuǎn)到:所標(biāo)記的地方去執(zhí)行。用法舉例見(jiàn)例二。注意:goto命令的標(biāo)簽長(zhǎng)度不能超過(guò)8個(gè)字節(jié),否則可能會(huì)出錯(cuò)。即thistest0和thistest的效果是一樣的,批處理只取前8個(gè)字節(jié),即thistest。7、setlocal和endloca
15、l命令。這兩個(gè)命令也是成對(duì)出現(xiàn)的,用來(lái)對(duì)批處理執(zhí)行過(guò)程中的環(huán)境變量進(jìn)行臨時(shí)修改和操作,當(dāng)執(zhí)行過(guò)endlocal或關(guān)閉批處理后環(huán)境變量仍為系統(tǒng)原先設(shè)置的值。例如系統(tǒng)環(huán)境變量設(shè)置了Windows文件夾的目錄為C:Windows,而在批處理執(zhí)行過(guò)程中要設(shè)置Windows文件夾的目錄為D:Windows,這就可以使用設(shè)置環(huán)境變量的命令在setlocal和endloacl之間進(jìn)行重新設(shè)置,這個(gè)設(shè)置只限于該批處理執(zhí)行過(guò)程中,是一個(gè)臨時(shí)設(shè)置。一般情況下setlocal和endlocal兩個(gè)命令在批處理中使用并不廣泛。小知識(shí):所謂“環(huán)境變量”,是指包含諸如驅(qū)動(dòng)器、路徑或文件名之類(lèi)的字符串,它控制著各種程序在執(zhí)
16、行時(shí)的外部環(huán)境,如臨時(shí)文件位置等。可以使用“控制面板”“系統(tǒng)”“高級(jí)”“環(huán)境變量”或使用set命令對(duì)環(huán)境變量進(jìn)行修改?!緩?fù)雜命令】if、set、shift、for復(fù)雜命令本身比較難掌握,但它們功能強(qiáng)大,在批處理中的應(yīng)用是十分廣泛的,它們是批處理中各種重要功能實(shí)現(xiàn)的基礎(chǔ)。熟練這些命令才可以讓寫(xiě)出的批處理實(shí)現(xiàn)想要的功能。8、if命令。懂得程序的朋友都知道,if命令在各種程序中都有使用,而且用的十分普遍。在批處理中,if命令和其他程序語(yǔ)言中的作用基本一樣,都是代表“如果就”,是一個(gè)選擇判斷命令,或者說(shuō)條件命令。在批處理中,if命令的使用也十分普遍,凡是牽扯到分支結(jié)構(gòu)的地方都要使用if命令。if命令判
17、斷程序執(zhí)行時(shí)條件是否滿(mǎn)足,如果滿(mǎn)足就執(zhí)行一個(gè)操作,不滿(mǎn)足就執(zhí)行另一種操作,條件可以是單個(gè),也可以是多個(gè)的。根據(jù)if命令判斷的對(duì)象,可將其分為三類(lèi):(1)、輸入判斷,用法為:IF NOT string1=string2 command在批處理執(zhí)行時(shí),可以為其賦予一個(gè)或多個(gè)參數(shù),如何根據(jù)輸入?yún)?shù)的不同來(lái)決定批處理執(zhí)行不同的命令呢?使用if命令的輸入判斷就可以實(shí)現(xiàn)。例三,03.bat:if "%1"="1" goto tern1if "%1"="2" goto tern2:tern1echo 輸入為1:tern2echo
18、 輸入為2%1在批處理中代表參數(shù),后面將專(zhuān)門(mén)介紹。當(dāng)輸入?yún)?shù)為1時(shí),執(zhí)行term1部分的命令,參數(shù)為2時(shí)就執(zhí)行term2部分的命令。通常情況下,為了使批處理更像一個(gè)標(biāo)準(zhǔn)的程序,也可以把該批處理的用法寫(xiě)進(jìn)去,查看方式跟查看DOS命令的用法相同,實(shí)現(xiàn)代碼見(jiàn)例二的2、3、4行和最后三行。(2)、存在判斷,用法為:IF NOT EXIST filename command該用法可以為if命令指定一個(gè)文件名,當(dāng)該文件存在時(shí)判斷結(jié)果為真,否則為假。存在判斷用法比較簡(jiǎn)單,如見(jiàn)例一。小技巧:if命令的存在判斷不能用來(lái)判斷一個(gè)目錄是否存在,只能判斷文件,但在每個(gè)目錄下都存在空設(shè)備,因此可以使用判斷空設(shè)備是否存在
19、的方式來(lái)間接判斷目錄是否存在。方法為:IF NOT EXIST drive:pathnul command。例如:if not exist e:toolscon md e:tools,如果不存在e:tools這個(gè)目錄就新建立一個(gè)。(3)、結(jié)果判斷,用法為:IF NOT ERRORLEVEL number command這是if命令三種判斷中最重要的一種。由于DOS命令在執(zhí)行完畢后都會(huì)給系統(tǒng)一個(gè)返回值,用來(lái)表示執(zhí)行結(jié)果。在if命令中設(shè)置一個(gè)比較值,如果返回值大于或等于比較值就繼續(xù)執(zhí)行,否則就退出if命令。例四,04.bat:echo offnetstat -a -n > a.txtfind
20、 a.txt "7626" if errorlevel 2 (echo You have infected GLACIER!) else (echo Congratulations! No GLACIER!)del a.txt& pause該程序用來(lái)檢查系統(tǒng)是否感染冰河木馬。在此批處理中,find命令執(zhí)行后返回一個(gè)數(shù)值2,if errorlevel判斷執(zhí)行find命令的結(jié)果(根據(jù)返回值判斷),當(dāng)返回值大于或等于2時(shí)表示find命令找到特定字符串,則執(zhí)行第一個(gè)echo命令,否則就執(zhí)行else后面的echo命令。說(shuō)明:也可以在if后面僅跟一個(gè)not來(lái)判斷“如果不就”,用
21、法跟“如果就”的用法一樣,本文不另做介紹。在代碼中直接使用goto命令結(jié)合返回碼來(lái)實(shí)現(xiàn)代碼跳轉(zhuǎn),從而省略if命令。例五,05.bat:goto answer%errorlevel%:answer0echo Program had return code 0:answer1echo Program had return code 1如果在if命令中不指定errorlevel的環(huán)境變量,則%errorlevel%會(huì)代替errorlevel,直接表示返回值。即如果errorlevel為0,則可以直接goto到:answer0,因?yàn)閍nswer%errorlevel%和answer0是等價(jià)的。if命令
22、的三種用法都比較好理解,結(jié)合在其他程序語(yǔ)言中if的用法,可以很快理解if命令的三種用法。9、for命令。for命令是批處理中最具程序特點(diǎn)的命令,它是一個(gè)循環(huán)命令,用來(lái)對(duì)多個(gè)目標(biāo)執(zhí)行同一個(gè)操作,通常情況下是對(duì)一個(gè)或一組文件中的每一個(gè)對(duì)象進(jìn)行定義的操作,直到所有對(duì)象都執(zhí)行這一操作完成,或被強(qiáng)制終止。for命令的基本用法為:for %variable in (set) do command,這是for命令的固定格式。(set)定義要操作目標(biāo)的范圍,%variable表示一個(gè)可在(set)定義的范圍內(nèi)取值的變量,command指定要執(zhí)行的操作,in和do為該命令中必不可少的關(guān)鍵字。for命令的執(zhí)行過(guò)程
23、,實(shí)際上是對(duì)(set)指定范圍內(nèi)的每一個(gè)對(duì)象執(zhí)行command定義的命令。例如要對(duì)一個(gè)密碼字典(每行一個(gè)密碼)中的每一密碼進(jìn)行測(cè)試,只需要指定(set)為密碼文件名,command為測(cè)試密碼的命令即可。執(zhí)行時(shí)for命令自動(dòng)將每個(gè)密碼用測(cè)試命令進(jìn)行測(cè)試,直到測(cè)試完所有密碼。注意:for命令不能嵌套執(zhí)行,即在一個(gè)for命令中不能執(zhí)行另一個(gè)for命令。在for命令中,變量可以使用除%0-%9以外的所有數(shù)字和字母,例如%i,但變量有大小寫(xiě)之分,%i不等于%I。當(dāng)要在批處理中執(zhí)行for命令時(shí),變量前要加兩個(gè)%符號(hào),否則會(huì)提示出錯(cuò)。如%i。本小節(jié)只介紹for命令本身,使用單%符號(hào)。根據(jù)在(set)部分定義
24、的操作對(duì)象的不同,可將for命令的作用分為四類(lèi):目錄操作、目錄書(shū)操作、數(shù)值范圍操作、文件解析。(1)、目錄操作:該操作只針對(duì)定義范圍內(nèi)的目錄進(jìn)行,執(zhí)行時(shí)要使用/d參數(shù)。假設(shè)要在當(dāng)前目錄中建立文件名分別為a、b、c的三個(gè)目錄,則執(zhí)行如下命令:for /d %i in (a,b,c) do md %i。該過(guò)程相當(dāng)于依次執(zhí)行md a、md b和md c。如果在(set)中使用*作為統(tǒng)配符,則可以設(shè)置操作對(duì)象為當(dāng)前目錄下的所有文件夾,也可以使用?符號(hào)來(lái)指定部分名稱(chēng)的文件夾為操作對(duì)象。如果要?jiǎng)h除這三個(gè)目錄則可執(zhí)行:for /d %i in (*) do rd %i。(2)、目錄樹(shù)操作:該操作針對(duì)指定的根
25、目錄樹(shù)的每一層子目錄進(jìn)行for命令,執(zhí)行時(shí)需要使用/r參數(shù)。如果沒(méi)有指定目錄,則默認(rèn)為當(dāng)前目錄。假設(shè)要查看指定目錄中的所有目錄及子目錄中的文件詳細(xì)信息,則執(zhí)行如下命令:for /r e:games %i in (.) do dir %i > info.txt。這樣相當(dāng)于在每個(gè)目錄及子目錄中都執(zhí)行了dir命令,然后將所有的執(zhí)行結(jié)果都寫(xiě)到info.txt文件中。(3)、數(shù)值范圍操作:該操作通過(guò)對(duì)(set)部分的特殊指定,可以生成一個(gè)數(shù)字序列來(lái)作為command的執(zhí)行范圍,執(zhí)行時(shí)需要使用/l參數(shù)。假設(shè)要生成所有三位數(shù)的有序序列,則可以利用for命令的/l參數(shù)方便實(shí)現(xiàn)。例六,06.bat:ech
26、o offfor /l %i in (100,1,999) do echo %i >> number.txtif errorlevel 0 echo All done.這樣就將100到999之間所有的數(shù)字按遞增順序?qū)懙絥umber.txt中,每行一個(gè)數(shù)字。在該操作的(set)部分中,前、后兩個(gè)數(shù)字指定數(shù)字序列的最小和/或最大值,中間的數(shù)字代表生成序列的方式,1代表遞增,-1代表遞減。若將(set)中的100和999互換位置,會(huì)將100到999之間的數(shù)按遞減順序排列并寫(xiě)到number.txt文件中。(4)、文件解析:該操作是for命令最難最煩瑣的操作,用來(lái)對(duì)定義范圍內(nèi)的文件內(nèi)容、字符
27、串以及其他命令的輸出進(jìn)行處理,執(zhí)行時(shí)要使用/f參數(shù)。要01.txt文件中的所有空行去掉,則執(zhí)行如下命令:for /f %i in (01.txt) do echo %i >> 02.txt。這樣就會(huì)將01.txt內(nèi)容中不為空的所有行寫(xiě)入到02.txt文件中,因?yàn)?f參數(shù)默認(rèn)不處理文件中的空行。在該操作中,可以為/f參數(shù)再帶上更多選項(xiàng)來(lái)實(shí)現(xiàn)更豐富的功能。在選項(xiàng)中可以定義被處理文件的其他條件,例如從第n行開(kāi)始處理、行結(jié)尾如果是指定字符就跳過(guò)、指定每行的第那些字符被參數(shù)取代等。for命令的用法十分靈活多變,有的甚至十分復(fù)雜,限與篇幅,這里不再深入介紹,本文在后面還將對(duì)for命令的高級(jí)用法
28、做出舉例。批處理作為DOS下的可執(zhí)行文件,可以加入?yún)?shù)以擴(kuò)大它的功能。批處理參數(shù)以一個(gè)%符號(hào)后緊跟一個(gè)數(shù)字組成,批處理在執(zhí)行時(shí),自動(dòng)用緊跟在批處理文件名后面的字符串或文件來(lái)依次替換該批處理內(nèi)部的參數(shù)。如果一個(gè)批處理文件test.bat以這樣的方式執(zhí)行:test a 123 name.txt,則在執(zhí)行過(guò)程中,批處理自動(dòng)從代碼中尋找%1并用a代替,%2用123代替,%3用name.txt代替。批處理參數(shù)的表示,只允許出現(xiàn)%0-%9(其中%0代表調(diào)用該批處理本身)但有時(shí)需要在批處理中使用超過(guò)%9的參數(shù),或者使用數(shù)目不定的參數(shù),就必須使用shift命令。shift命令的作用就是修改參數(shù)在批處理文件中的
29、位置。例七,07.bat:echo off:getfileif "%1"="" goto exitcopy %1 C:Windowsshiftgoto getfile:exit該批處理的作用,是復(fù)制任意多的文件file1、file2到c:windows目錄中,假設(shè)有三個(gè)文件要復(fù)制,執(zhí)行07.bat file1 file2 file3。程序先判斷是否存在第一個(gè)參數(shù),存在則復(fù)制第一個(gè)文件,然后執(zhí)行shift命令,準(zhǔn)備第二次復(fù)制。在第二次中,由于執(zhí)在第一次執(zhí)行了shift命令,所有的%1都被替換成了%2,執(zhí)行過(guò)程變?yōu)橄扰袛嗟诙€(gè)參數(shù)是否存在,存在則復(fù)制第二個(gè)文
30、件,然后再執(zhí)行一次shift命令來(lái)完成從%3到%2的替換。依次類(lèi)推。在使用shift命令實(shí)現(xiàn)不定數(shù)目的參數(shù)替換功能時(shí)(如本例),必須要注意執(zhí)行shift命令的時(shí)機(jī),如果選擇不當(dāng)則不能達(dá)到目的,甚至?xí)霈F(xiàn)死循環(huán)的情況。這需要不斷的摸索,進(jìn)一步理解shift命令的用法。有關(guān)批處理參數(shù)的用法后面還有詳解?!酒渌睢吭谂幚碇谐S玫腄OS命令。從本文開(kāi)始就在強(qiáng)調(diào),各種DOS命令是批處理的核心和基礎(chǔ),只有掌握好各種DOS命令,才可能將它們靈活的運(yùn)用到批處理中,熟練使用DOS命令是玩轉(zhuǎn)批處理的必要條件。在批處理中常用的DOS命令還有以下這些:copy、dir、del、type、path、set等內(nèi)部命令
31、,net、ping、cmd、at、sort、attrib、fc、choice等外部命令。小知識(shí):內(nèi)部命令是指包括在(98系統(tǒng))或cmd.exe(98以上系統(tǒng))里的命令。比如你打開(kāi)CMD命令行,輸入help并回車(chē),顯示出來(lái)的所有命令都是內(nèi)部命令,它們都被包括在cmd.exe這個(gè)文件里了。外部命令是指有獨(dú)立文件的命令,比如net和ping命令都是外部命令,在system32目錄下可以找到net.exe和ping.exe文件。如何學(xué)習(xí)DOS命令不是本文介紹的內(nèi)容,幾乎任何一個(gè)DOS命令都可以在命令提示符下輸入“命令名 /? | more”來(lái)查看其幫助。三、高級(jí)批處理命令:認(rèn)識(shí)了批處理中常用的命令,如
32、果讀者認(rèn)為批處理就這些內(nèi)容的話(huà),那就大錯(cuò)特錯(cuò)了。批處理還有功能更特殊用法更精妙的命令,還有更強(qiáng)大的功能和潛力等待著我們?nèi)ネ诰?。高?jí)命令分為組合命令、管道命令和重定向命令?!窘M合命令】&、&&、|顧名思義,組合命令實(shí)際上是一個(gè)有意義的連接符,用來(lái)連接多條命令。將多條子命令用這種連接符連接起來(lái)放在一行去當(dāng)作一個(gè)命令執(zhí)行,這在批處理中是允許的,而且使用十分廣泛。11、&命令。&命令是最簡(jiǎn)單的組合命令,它的作用是連接多條子命令,不管前面的命令是否執(zhí)行成功,后面的命令都將按順序依次執(zhí)行完畢。用法為:COMMAND1 & COMMAND2 & COM
33、MAND3例八,08.bat:del a.tmp & echo All done! & pause例八中的這句命令由三條子命令組成,它們依次執(zhí)行,任何一個(gè)命令的執(zhí)行結(jié)果都不影響其他子命令的執(zhí)行。12、&&命令。&&命令也是用來(lái)連接多條子命令的,用法與&命令相同,不同之處在于,它在從前往后依次執(zhí)行被它連接的幾個(gè)子命令時(shí)會(huì)自動(dòng)判斷是否有子命令執(zhí)行出錯(cuò),一旦發(fā)現(xiàn)某個(gè)子命令執(zhí)行出錯(cuò),該子命令后面的全部命令都將被忽略。這樣,將某些在特定條件下不必執(zhí)行的命令用&&命令連接在它的條件后面,當(dāng)條件不正確時(shí)就不執(zhí)行后面的命令了。例九,09.
34、bat:dir file:/IP/www/user.mdb && copy file:/IP/www/user.mdb e:backupuser.mdb先用dir命令查看遠(yuǎn)程主機(jī)上user.mdb文件是否存在,執(zhí)行成功后(文件存在)就用copy命令復(fù)制到本地,否則不執(zhí)行copy命令。13、|命令。|命令同樣用來(lái)連接多條子命令,用法同前兩種組合命令完全一樣,但它的作用跟&&命令剛好相反,當(dāng)多條子命令中只要有一個(gè)可以成功執(zhí)行(&&命令是執(zhí)行出錯(cuò)),后面的所有子命令將被忽略。例十,10.bat:dir 01.exe | dir 02.exe | ech
35、o No virus found! & pauseecho Found Virus! & goto clean假設(shè)01.exe和02.exe是同一個(gè)病毒的兩個(gè)文件,先用dir 01.exe命令檢查文件01.exe是否存在,如果不存在(執(zhí)行不成功)就繼續(xù)執(zhí)行dir 02.exe檢查02.exe是否存在,如果存在01.exe就顯示發(fā)現(xiàn)病毒,并跳轉(zhuǎn)程序到清除病毒部分?!竟艿烂睢縷14、|命令。管道命令用來(lái)實(shí)現(xiàn)將一個(gè)命令的輸出信息和另一個(gè)命令的輸入相連接,類(lèi)似與從管道中傳遞實(shí)體。用戶(hù)只能看到最后的結(jié)果而不能看到它們之間通信的過(guò)程,因?yàn)檫@個(gè)過(guò)程是在管道中進(jìn)行的。在批處理中使用管道命令,
36、可以讓命令之間互相通信,而將中間過(guò)程透明化,因此作用十分巨大。小知識(shí):操作系統(tǒng)中把“管道”定義為連接一個(gè)讀進(jìn)程和一個(gè)寫(xiě)進(jìn)程以實(shí)現(xiàn)它們之間通信的文件,這個(gè)“文件”是在內(nèi)存中建立的,當(dāng)信息傳遞結(jié)束后它也隨之消失,所以是不可見(jiàn)的。|命令用來(lái)實(shí)現(xiàn)兩個(gè)命令之間的管道,它將前一命令的輸出作為后一命令的輸入,這種用法比較特殊,但卻很高效??梢苑謨刹絹?lái)理解|命令:先將前一命令執(zhí)行后的結(jié)果輸出到內(nèi)存的某一地址,再讓后一個(gè)命令從該地址來(lái)取輸入信息。在這兩步之間,這個(gè)被兩個(gè)命令共同使用的內(nèi)存就相當(dāng)于管道。例十一,11.bat:ype code.txt | debug想將一個(gè)保存在code.txt中的代碼讓dubug
37、程序來(lái)執(zhí)行,不必先打開(kāi)debug,再將code.txt的內(nèi)容粘貼在里面后執(zhí)行,只需要利用這個(gè)管道命令就可以實(shí)現(xiàn)。先用type命令在內(nèi)存中顯示code.txt的內(nèi)容(type命令的輸出),然后將這些輸出作為debug的輸入內(nèi)容傳遞給debug?!局囟ㄏ蛎睢?gt;和>>、<、>&和<&15、>和>>命令。>和>>命令又被稱(chēng)為輸出重定向命令,它們的作用是一樣的,都是將前一命令的輸出寫(xiě)到一個(gè)文件中。在批處理中,它們往往被用來(lái)將某些信息保存到一個(gè)文件中。例十二,12.bat:dir /s e: > a.txt這條
38、命令用來(lái)得到一份E盤(pán)的目錄和詳細(xì)文件列表,并保存到a.txt文件中。先用dir/s命令將E盤(pán)的目錄列出來(lái)(在內(nèi)存中),然后用>重定向命令將該部分內(nèi)存的內(nèi)容寫(xiě)到a.txt中。>命令寫(xiě)文件的方式是從文件第一行開(kāi)始,直到寫(xiě)完管道中的內(nèi)容,原來(lái)文件的起始部分將被覆蓋。所以如果要在同一個(gè)文件中再寫(xiě)進(jìn)去F盤(pán)的詳細(xì)文件列表,就要使用>>命令了,因?yàn)?gt;>命令是從文件在最后一行,將管道中的信息追加進(jìn)去的。例十三,13.bat:dir /s e: > a.txtdir /s f: >> a.txt可見(jiàn),>命令和>>命令的不同之處在于前者是從文
39、件的第一行開(kāi)始覆蓋,而后者是從文件的最后一行開(kāi)始追加。16、<、<&和>&命令。這三個(gè)命令一般不常用,本文只作簡(jiǎn)單介紹,有興趣的讀者可以通過(guò)其他途徑深入學(xué)習(xí):<,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤(pán)中讀入。>&,將一個(gè)句柄的輸出寫(xiě)入到另一個(gè)句柄的輸入中。 <&,剛好和>&相反,從一個(gè)句柄讀取輸入并將其寫(xiě)入到另一個(gè)句柄輸出中。應(yīng)用在批處理中的所有命令基本上都在前面介紹了,但光依靠這些命令還不足以讓批處理發(fā)揮其所有的功能。批處理在執(zhí)行時(shí)還可以被加進(jìn)去參數(shù),還可以利用批處理來(lái)操作注冊(cè)表四、批處理的綜合應(yīng)用
40、:【批處理參數(shù)的應(yīng)用】參數(shù)在批處理中的應(yīng)用十分廣泛,很多情況下如果不使用參數(shù),其功能將無(wú)法完成。參數(shù)中,%0表示該批處理文件名,相當(dāng)于對(duì)該批處理自身的一次調(diào)用;%1-%9表示在執(zhí)行時(shí)用加入的參數(shù)代替。如果參數(shù)多于9個(gè),則需要使用shift命令來(lái)處理多出的參數(shù)。例十四,14.bat:echo offnet use %1ipc$ "%3" /u:"%2"goto result%errorlevel%:result0echo host=%1echo username=%2echo username=%3pause:result2假設(shè)該批處理文件名為ipc.ba
41、t,則執(zhí)行時(shí)在命令行輸入ipc 23 administrator password【批處理操作注冊(cè)表】一般情況下,操作注冊(cè)表的方法是直接打開(kāi)注冊(cè)表編輯器對(duì)其操作,還有一種是利用導(dǎo)入的方法來(lái)操作注冊(cè)表,將要編輯的注冊(cè)表內(nèi)容寫(xiě)到一個(gè)文件中,然后將該文件執(zhí)行導(dǎo)入內(nèi)容。使用批處理也可以對(duì)注冊(cè)表進(jìn)行操作,利用的原理就是導(dǎo)入。注意:注冊(cè)表包含了計(jì)算機(jī)中每個(gè)用戶(hù)的配置文件、有關(guān)系統(tǒng)硬件的信息、安裝的程序及屬性設(shè)置,Windows 在其運(yùn)行中不斷引用這些信息。在操作注冊(cè)表前最好先對(duì)其進(jìn)行備份,以免因操作不當(dāng)造成難以預(yù)測(cè)的后果。結(jié)合管道命令>和echo命令就可以將注冊(cè)表內(nèi)容寫(xiě)到一個(gè)文
42、件中,最后利用regedit命令導(dǎo)入就可以了。例十四:echo offrem This REGfile close all shared entity.echo Windows Registry Editor Version 5.00 > name.regecho. >>name.reg echo HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters >> name.regecho "AutoShareServer"=dword:00000000 >
43、> name.regecho "AutoShareWks"=dword:00000000 >> name.regecho.regedit /s該例的作用,是通過(guò)修改注冊(cè)表來(lái)達(dá)到禁止默認(rèn)共享的目的。在該例中,使用echo命令顯示一個(gè)字符串,然后用>命令將此字符串重定向到name.reg文件中,最后利用regedit命令將name.reg文件的內(nèi)容寫(xiě)到注冊(cè)表里。如果為Windows98系統(tǒng),則.reg文件的第一行應(yīng)修改為REGEDIT4,頂格大寫(xiě)。注意:echo命令后不空格而緊跟一個(gè)小圓點(diǎn),作用是顯示一個(gè)空行,且顯示空行的前提是必須執(zhí)行過(guò)echo off
44、命令。.reg文件第二行和最后一行的兩個(gè)空行必須存在,它是注冊(cè)表文件的固定格式。【批處理綜合應(yīng)用舉例】在介紹了批處理中使用的所有命令后,下面將以更多的例子來(lái)向大家展示批處理的綜合應(yīng)用。精彩實(shí)例一:注冊(cè)表IE選項(xiàng)快恢復(fù)!很多惡意的垃圾網(wǎng)站會(huì)偷偷的修改用戶(hù)的注冊(cè)表,從而達(dá)到修改IE的標(biāo)題欄、首頁(yè)等,甚至將恢復(fù)首頁(yè)的地方變?yōu)榛疑?。本例將以批處理?dǎo)入注冊(cè)表的形式解決這些問(wèn)題。echo offecho Windows Registry Editor Version 5.00 >> fixie.regecho. >> fixie.regecho HKEY_CURRENT_USERS
45、oftwareMicrosoftInternet ExplorerMain >> fixie.regecho "Windows Title"="Microsoft Internet Explorer" >> fixie.regecho "Start Page"="about:blank" >> fixie.regecho. >> fixie.regecho HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInternet Explo
46、rerControl Panel >> fixie.regecho "Settings"=dword:0 >> fixie.regecho "Links"=dword:0 >> fixie.regecho "SecAddSites"=dword:0 >> fixie.regecho. >> fixie.regregedit /s fixie.reg & del fixie.reg精彩實(shí)例二:反病毒工具自己寫(xiě)。面對(duì)日益猖獗的病毒,很多菜鳥(niǎo)都叫苦不迭,不知道如何應(yīng)對(duì)。其實(shí)
47、利用批處理,完全可以達(dá)到自動(dòng)搜索、分析和清除病毒的目的。該工具分為三部分。備份:先將sysrem32目錄的所有.exe文件和.dll文件的詳細(xì)信息寫(xiě)到一個(gè)備份中,系統(tǒng)每次啟動(dòng)時(shí)都自動(dòng)將當(dāng)前情況和備份文件對(duì)比;搜索與分析部分:具備可擴(kuò)展性,用戶(hù)可以隨時(shí)添加新的“病毒庫(kù)”進(jìn)去,同時(shí)根據(jù)病毒的資料,使用call命令調(diào)用清除部分。各種病毒的詳細(xì)資料可以從Internet上得到。備份:此過(guò)程在系統(tǒng)確定無(wú)病毒時(shí)進(jìn)行。保存為Backup.bat。echo offdir c:windowssystem32*.exe > c:exe_0.txt dir c:windowssystem32*.dll >
48、; c:dll_0.txt搜索與分析:將該批處理加到開(kāi)機(jī)啟動(dòng)項(xiàng)目中,每次開(kāi)機(jī)自動(dòng)檢查。可檢測(cè)的病毒種類(lèi)具備擴(kuò)展性,只需要添加更多的病毒信息即可。保存為Search.bat。echo offdir c:windowssystem32*.dll >c:exe_1.txt dir c:windowssystem32*.exe >c:dll_1.txt fc c:exe_0.txt c:exe_1.txt >c:exe.txt fc c:dll_0.txt c:dll_1.txt >c:dll.txtfind c:exe.txt "10.bat" &
49、& echo "發(fā)現(xiàn)批處理蠕蟲(chóng)病毒:姆碼" && call muma.batfind c:exe.txt "avserve.exe" && echo "發(fā)現(xiàn)蠕蟲(chóng)病毒:震蕩波" && call sasser.batpause清除:每個(gè)病毒的清除代碼放到一個(gè)批處理中。這里以“姆碼”病毒為例,使用“流光”自帶的DOS下進(jìn)程結(jié)束工具pskill.exe來(lái)結(jié)束病毒程序的進(jìn)程。保存為muma.bat。echo offnet user KKKKKKK /deletenet stop appli
50、cationset win=%systemroot%system32attrib -h -s *.bat & del %win%*.bat /Fif not errorlevel 0 goto echoattrib -h -s HFind.exe & pskill HFind.exe & del %win%HFind.exe /Fif not errorlevel 0 goto echoattrib -h -s ntservice.exe & pskill ntservice.exe & del %win%ntservice.exe /Fif not e
51、rrorlevel 0 goto echoattrib -h -s nwiz_.exe & pskill nwiz_.exe & del %win%nwiz_.exe /Fif not errorlevel 0 goto echoattrib -h -s psexec.exe & pskill psexec.exe & del %win%psexec.exe /Fif not errorlevel 0 goto echoattrib -h -s psexesvc.exe & pskill psexesvc.exe & del %win%psexe
52、svc.exe /Fif not errorlevel 0 goto echoattrib -h -s rep.exe & pskill rep.exe & del %win%rep.exe /Fif not errorlevel 0 goto echoecho All done.:echoecho Delete failed! Please scan your system with Anti-virus tools!pause + +=+ 精彩實(shí)例三:打造自己的弱口令掃描器。密碼和協(xié)議,這是網(wǎng)絡(luò)安全最根本的兩個(gè)因素。而在密碼漏洞中,最常見(jiàn)的是弱口令,它一直是阻礙網(wǎng)絡(luò)安全的絆
53、腳石。利用批處理就可以實(shí)現(xiàn)弱口令掃描,將網(wǎng)絡(luò)中存在弱口令的機(jī)器找出來(lái)并保存其IP、用戶(hù)名和密碼。該掃描器共有如下文件:ip.txt、psw.txt、user.txt、result.txt、ip.bat、psw.bat、user.bat、ipc.bat 8個(gè)文件組成,它利用for命令,從一個(gè)用戶(hù)名字典和一個(gè)密碼字典里依次取出一個(gè)用戶(hù)名和密碼來(lái)進(jìn)行ipc$連接,一旦連接成功就記錄IP、用戶(hù)名和密碼到一個(gè)指定文件中。ip.txt:保存要掃描的IP地址,每行一個(gè)IP;psw.txt:保存要測(cè)試的密碼,每行一個(gè)密碼;user.txt:保存要測(cè)試的用戶(hù)名,每行一個(gè)用戶(hù)名;result.txt:保存掃描結(jié)果。ip.bat:在結(jié)果中保存日期和時(shí)間,并依次從user.txt中取用戶(hù)名。echo offdate /t >> result.txttime /t >> result.txtecho result: >&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版窗簾布藝定制與售后維修服務(wù)合同3篇
- 2024版信息調(diào)研保密協(xié)議3篇
- 個(gè)人二手房產(chǎn)買(mǎi)賣(mài)協(xié)議樣本(2024版)
- 2025年度工業(yè)用地租賃居間合同范本4篇
- 2025餐飲業(yè)食品安全溯源技術(shù)合作合同范本3篇
- 2024版深水井施工合同
- 2025年叉車(chē)租賃合同范本一(含綠色節(jié)能要求)4篇
- 二零二五年度補(bǔ)充協(xié)議范本:簽約次數(shù)規(guī)定及實(shí)施標(biāo)準(zhǔn)3篇
- 2024礦業(yè)資產(chǎn)買(mǎi)賣(mài)貸款居間服務(wù)協(xié)議版B版
- 二零二五年度風(fēng)力發(fā)電機(jī)組安裝與維護(hù)協(xié)議6篇
- 上海市12校2025屆高三第一次模擬考試英語(yǔ)試卷含解析
- 三年級(jí)數(shù)學(xué)(上)計(jì)算題專(zhuān)項(xiàng)練習(xí)附答案集錦
- 鋪大棚膜合同模板
- 長(zhǎng)亭送別完整版本
- 《鐵路軌道維護(hù)》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書(shū)簡(jiǎn)版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲(chǔ)系統(tǒng)解決方案
- 《銷(xiāo)售心理學(xué)培訓(xùn)》課件
- 2024年安徽省公務(wù)員錄用考試《行測(cè)》真題及解析
- 你比我猜題庫(kù)課件
- 豐順縣鄉(xiāng)鎮(zhèn)集中式飲用水水源地基礎(chǔ)狀況調(diào)查和風(fēng)險(xiǎn)評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論