批處理(dos/bat)最完整人性化教程
更新時(shí)間:2007年05月15日 00:00:00 作者:
這一章就寫到這里了??赡苡信笥褑柫耍涸趺礇]介紹if命令?呵呵,不是我忘了,而是它不容易說清楚,下一章再講了!這一章講的這點(diǎn)東西,如果你是初學(xué)者,恐怕也夠消化的了。記住一句話:DOS是批處理的BODY,任何一個(gè)DOS命令都可以被用在批處理腳本中去完成特定的功能。到這里,你是否已經(jīng)想到了用自己肚子里的東西去寫點(diǎn)帶有自動(dòng)化色彩的東東呢?很簡(jiǎn)單,就是一個(gè)DOS命令的集合而已,相信自稱為天才的你已經(jīng)會(huì)把計(jì)算機(jī)等級(jí)考試上機(jī)試題中的DOS部分用批處理來自動(dòng)化完成了。
煩!就好象一個(gè)半老女人到了更年期,什么事都想嘮叨幾句,什么事都感到不舒服,看誰(shuí)誰(shuí)不爽。明知山有虎,偏向虎山行,最后留下一身傷痕無(wú)功而返時(shí),才發(fā)現(xiàn)自己竟然如此脆弱,如此渺小,如此不堪一擊。徘徊在崩潰的邊緣,突然回想起了自己最后一次扁人的那一刻,還真有點(diǎn)懷念(其實(shí)我很不喜歡扁人,更不喜歡被人扁)。我需要發(fā)泄,我用手指拼命的敲打著鍵盤,在一陣接一陣有節(jié)奏的聲音中,屏幕上出現(xiàn)了上面的這些文字??呻y道這就是發(fā)泄的另一種方式嗎?中國(guó)人還是厲害,早在幾千年前孔老夫子就說過“唯女子與小人,難養(yǎng)也”,真**有先見之明,佩服!雖然是在發(fā)泄,不過大家請(qǐng)放心,以我的脾氣,既然決定寫這篇教程,就一定會(huì)盡力去寫好,寫完美,絕對(duì)不給自己留下遺憾,要不這教程就不是我寫的!
曾經(jīng)有一篇經(jīng)典的批處理教程出現(xiàn)在你的屏幕上,你沒有保存,直到找不到它的鏈接你才后悔莫及,人世間最大的痛苦莫過于此。如果上天能給你一個(gè)再看一次的機(jī)會(huì),你會(huì)對(duì)那篇教程說三個(gè)字:我愛你!如果非要給這份愛加上一個(gè)期限,你希望是100年。因?yàn)?00年后,你恐怕早已經(jīng)掛了!而現(xiàn)在,你的屏幕上出現(xiàn)了這篇你正在看的批處理教程,雖然不如你曾經(jīng)看的那篇經(jīng)典,但如果勉強(qiáng)還過的去。你會(huì)愛它嗎?時(shí)間會(huì)有50年那么長(zhǎng)嗎?答案是:試試看吧。
批處理腳本中最重要的幾個(gè)命令,將在這一章詳細(xì)介紹,但是很遺憾,有些細(xì)節(jié)到現(xiàn)在我都沒掌握的很好,甚至還有些生分。如同還不太懂得愛一樣。但我一直都在努力,即使一直都沒有收獲。所以可能講的會(huì)比較籠統(tǒng),但我會(huì)告訴你方法,剩下的就是時(shí)間問題了,需要自己去磨練。讓我們共同努力吧。冰凍三尺非一日之寒,滴水穿石非一日之功。有些事情,比如學(xué)批處理,比如愛一個(gè)人,都是不能速成的,甚至還會(huì)有付出艱辛而收獲為甚微的情況。再次重申,看這篇教程的時(shí)候,一定要靜下心來,除非你已經(jīng)掌握了這篇教程的所有東西----但那也就不必看了,浪費(fèi)時(shí)間!
7、if
接上一章,接著講if命令。總的來說,if命令是一個(gè)表示判斷的命令,根據(jù)得出的每一個(gè)結(jié)果,它都可以對(duì)應(yīng)一個(gè)相應(yīng)的操作。關(guān)于它的三種用法,在這里分開講。
(1)、輸入判斷。還是用例五里面的那幾句吧:
if "%1"=="" goto usage
if "%1"=="/?" goto usage
if "%1"=="help" goto usage
這里判斷輸入的參數(shù)情況,如果參數(shù)為空(無(wú)參數(shù)),則跳轉(zhuǎn)到usage;如果參數(shù)為/?或help時(shí)(大家一般看一個(gè)命令的幫助,是不是輸入的/?或help呢,這里這么做只是為了讓這個(gè)腳本看起來更像一個(gè)真正的程序),也跳轉(zhuǎn)到usage。這里還可以用否定形式來表示“不等于”,例如:if not "%1"=="" goto usage,則表示如果輸入?yún)?shù)不為空就跳轉(zhuǎn)到usage(實(shí)際中這樣做就沒意義了,這里介紹用法,管不了那么多了,呵呵。)是不是很簡(jiǎn)單?其實(shí)翻譯成中文體會(huì)一下就understand了。
(2)、存在判斷。再看例二里這句:
if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif
如果存在那些gif文件,就刪除這些文件。當(dāng)然還有例四,都是一樣的道理。注意,這里的條件判斷是判斷存在的,當(dāng)然也可以判斷不存在的,例如下面這句“如果不存在那些gif文件則退出腳本”:if not exist C:\Progra~1\Tencent\AD\*.gif exit。只是多一個(gè)not來表示否定而已。
(3)、結(jié)果判斷。還是拿例五開刀(沒想到自己寫的腳本,竟然用處這么大,呵呵):
masm %1.asm
if errorlevel 1 pause & edit %1.asm
link %1.obj
先對(duì)源代碼進(jìn)行匯編,如果失敗則暫停顯示錯(cuò)誤信息,并在按任意鍵后自動(dòng)進(jìn)入編輯界面;否則用link程序連接生成的obj文件。這里只介紹一下和if命令有關(guān)的地方,&命令后面會(huì)講到。這種用法是先判斷前一個(gè)命令執(zhí)行后的返回碼(也叫錯(cuò)誤碼,DOS程序在運(yùn)行完后都有返回碼),如果和定義的錯(cuò)誤碼符合(這里定義的錯(cuò)誤碼為1),則執(zhí)行相應(yīng)的操作(這里相應(yīng)的操作為pause & edit %1.asm部分)。
另外,和其他兩種用法一樣,這種用法也可以表示否定。用否定的形式仍表達(dá)上面三句的意思,代碼變?yōu)椋?nbsp;
masm %1.asm
if not errorlevel 1 link %1.obj
pause & edit %1.asm
看到本質(zhì)了吧?其實(shí)只是把結(jié)果判斷后所執(zhí)行的命令互換了一下,“if not errorlevel 1”和“if errorlevel 0”的效果是等效的,都表示上一句masm命令執(zhí)行成功(因?yàn)樗清e(cuò)誤判斷,而且返回碼為0,0就表示否定,就是說這個(gè)錯(cuò)誤不存在,就是說masm執(zhí)行成功)。這里是否加not,錯(cuò)誤碼到底用0還是1,是值得考慮的兩個(gè)問題,一旦搭配不成功腳本就肯定出錯(cuò),所以一定要體會(huì)的很深刻才行。如何體會(huì)的深刻?練習(xí)!自己寫一個(gè)腳本,然后把有not和沒有not的情況,返回碼為0或1的情況分別寫進(jìn)去執(zhí)行(怎么,嫌麻煩???排列組合算一下才四中情況你就嫌麻煩了?后面介紹管道命令和組合命令時(shí)還有更麻煩的呢!怕了?呵呵。),這樣從執(zhí)行的結(jié)果中就能很清楚的看出這兩種情況的區(qū)別。
這種用errorlevel結(jié)果判斷的用法是if命令最難的用法,但也恰恰是最有用的用法,如果你不會(huì)用errorlevel來判斷返回碼,則要達(dá)到相同的效果,必須用else來表示“否則”的操作,是比較麻煩的。以上代碼必須變成:
masm %1.asm
if exist %1.obj link %1.obj
else pause & edit %1.asm
關(guān)于if命令的這三種用法就say到這里,理解很簡(jiǎn)單,但應(yīng)用時(shí)就不一定用的那么得心應(yīng)手,主要是熟練程度的問題??赡苡械呐笥延悬c(diǎn)驚訝,我怎么沒給出類似下面三行的用法介紹,是因?yàn)橄旅嫒惺莍f命令幫助里對(duì)它自身用法的解釋,任何人只要一個(gè)“if /?”就能看到,我沒有必要在這里多費(fèi)口舌;更重要的原因,是我覺得這樣介紹的不清楚,看的人不一定看的懂,所以我采用上面自己對(duì)if命令的理解來介紹。一定要注意的是,這三種用法的格式各不相同,而且也是不能改變的,但實(shí)際上可以互換(以為從本質(zhì)上講,這三種用法都是建立在判斷的基礎(chǔ)上的,哲學(xué)教我們學(xué)會(huì)透過現(xiàn)象看事物本質(zhì)!)。有興趣的朋友可以自己研究一下。
IF [NOT] ERRORLEVEL number do command
IF [NOT] string1==string2 do command
IF [NOT] EXIST filename do command
8、call
學(xué)過匯編或C的朋友,肯定都知道call指令表示什么意思了,在這里它的意思其實(shí)也是一樣的。在批處理腳本中,call命令用來從一個(gè)批處理腳本中調(diào)用另一個(gè)批處理腳本??蠢耍J(rèn)的三個(gè)腳本文件名分別為start.bat、10.bat和ipc.bat):
start.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
有沒有看出什么不對(duì)的地方?沒看出來啊?沒看出來就對(duì)了,其實(shí)就沒有不對(duì)的地方嘛,你怎么看的出來!從上面兩個(gè)腳本,你可以得到如下信息:1、腳本調(diào)用可以靈活運(yùn)用,循環(huán)運(yùn)用、重復(fù)運(yùn)用。2、腳本調(diào)用可以使用參數(shù)!關(guān)于第一點(diǎn)就不多說了,聰明的你一看就應(yīng)該會(huì),這里說一下第二點(diǎn)。
在start.bat中,10.bat后面跟了參數(shù)0,在執(zhí)行時(shí)的效果,其實(shí)就是把10.bat里的參數(shù)%1用0代替。在start.bat中,ipc.bat后面跟了參數(shù)ipcfind.txt(一個(gè)文件,也可以做參數(shù)),執(zhí)行時(shí)的效果,就是用ipc.bat中的每一行的三個(gè)變量(這里不懂沒關(guān)系,學(xué)過for命令后就懂了),對(duì)應(yīng)代換ipc.bat中的%%i、%%j和%%k。這里參數(shù)調(diào)用是非常靈活的,使用時(shí)需要好好體會(huì)。在初學(xué)期間,可以先學(xué)習(xí)只調(diào)用腳本,至于連腳本的參數(shù)一起使用的情況,在后面的學(xué)習(xí)中自然就會(huì)有比較深刻的理解,這是因?yàn)楫?dāng)你已經(jīng)可以靈活運(yùn)用批處理腳本后,如何使代碼寫的更精簡(jiǎn)更完美更高效就自然包括到了考慮的范圍,這時(shí)候你就會(huì)發(fā)現(xiàn)在調(diào)用腳本時(shí)直接加入?yún)?shù),可以使代碼效率加倍。By the way,上面的這幾個(gè)腳本,都是Bat.Worm.Muma病毒的一部分,在后面的教程里,大家將有機(jī)會(huì)見到這個(gè)病毒的真面目。 那是不是說,在同一個(gè)目錄下至少存在兩個(gè)批處理腳本文件(只有一個(gè)你調(diào)用誰(shuí)?)?呵呵,注意了,這句話錯(cuò)了!!只有一個(gè)照樣可以調(diào)用----調(diào)用自身!看例九(默認(rèn)腳本文件名a.bat):
net send %1 This is a call example.
call a.bat
這兩句一結(jié)合,效果自然不怎么樣,因?yàn)橹挥幸慌_(tái)機(jī)器來發(fā)消息,誰(shuí)怕誰(shuí)?。课医o你來個(gè)禮尚往來!可如果有100臺(tái)機(jī)器同時(shí)執(zhí)行,而且每臺(tái)機(jī)器開10和窗口同時(shí)向一個(gè)目標(biāo)機(jī)器發(fā)消息的話,呵呵。這里call a.bat的作用就是調(diào)用自身,執(zhí)行完前一句net send命令后再調(diào)用自身,達(dá)到了循環(huán)執(zhí)行的目的。
給出一個(gè)很有意思的腳本,有興趣的朋友可以實(shí)驗(yàn)一下。例十(默認(rèn)腳本文件名為a.bat):
call a.bat
一定要在DOS窗口下執(zhí)行,否則只會(huì)看到一個(gè)窗口一閃而過,看不到最后結(jié)果。等執(zhí)行完后,當(dāng)腳本被執(zhí)行了1260次,別忘了想一下到底是為什么!愛情有時(shí)候跟這個(gè)腳本一樣,一旦陷入死循環(huán),最后的結(jié)果都是意想不到的。只是愛情,絕對(duì)不會(huì)等到被毫無(wú)理由的循環(huán)這么多次,也許在第三次時(shí)就出現(xiàn)了love is aborted的提示。
9、find
這是一個(gè)搜索命令,用來在文件中搜索特定字符串,通常也作為條件判斷的鋪墊程序(我怎么突然想起了這四個(gè)字?)。這個(gè)命令單獨(dú)使用的情況在批處理中是比較少見的,因?yàn)闆]什么實(shí)際意義。還是借例三來說明:
@echo off
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt
pause & exit
先用netstat命令檢查是否有冰河默認(rèn)的端口7626在活動(dòng),并把結(jié)果保存到a.txt中。然后使用type命令列出a.txt中的內(nèi)容,再在列出的內(nèi)容中搜索字符串“7626” ,發(fā)現(xiàn)有的話則提示中了冰河,否則退出。看,find命令其實(shí)就這么簡(jiǎn)單,但有一點(diǎn)必須要注意到:如果不使用type命令列出a.txt中的內(nèi)容,而是直接使用find命令在a.txt中找“7626”(find a.txt "7626" && echo "Congratulations! You have infected GLACIER!"),就必須得給出這個(gè)a.txt的絕對(duì)路徑(我試過了,find并沒有默認(rèn)路徑就是當(dāng)前路徑的功能,必須手動(dòng)指定。也許是我錯(cuò)了,歡迎指正)。因?yàn)樵趂ind命令的幫助里有這么一句話:如果沒有指定路徑,find將搜索鍵入的或者由另一個(gè)命令產(chǎn)生的文字。這里的“另一個(gè)命令”自然就指的type命令了。
至于find命令的其他幾個(gè)參數(shù)如v、n、i等,有興趣的朋友自己去研究吧,這已經(jīng)屬于DOS學(xué)習(xí)的內(nèi)容了,這里就不做介紹。關(guān)于find命令和其他命令的一些更精妙的用法(有些簡(jiǎn)直令人叫絕),后續(xù)的教程中將介紹,希望關(guān)注。
10、for、set、shift
為什么把這三個(gè)命令放到一起來講?原因除了我說明外,恐怕誰(shuí)也想不到!很簡(jiǎn)單的一句話:其實(shí)我也不太懂!是的,對(duì)于這兩個(gè)命令,我是從研究Bat.Worm.Muma病毒開始學(xué)習(xí)的,時(shí)間過去了不少,但還是沒完全搞明白,我怕講出來連自己都看不懂,我更怕不小心講錯(cuò)了成了罪人。所以我給出一個(gè)腳本去告訴你,如何讓這兩個(gè)命令給自己留一個(gè)初步的印象,其實(shí)也就是這兩個(gè)命令的入門,而并不是說如何領(lǐng)會(huì)這兩個(gè)命令。因?yàn)橐I(lǐng)會(huì)如此精妙的兩個(gè)命令(特別是for)談何容易!也許你會(huì)表?yè)P(yáng)我說我誠(chéng)實(shí)、不懂就不懂;也許你會(huì)罵我,讓我既然不懂就趕緊滾蛋,不要在這里丟人顯眼;也許你還會(huì)說一些別的這樣那樣好聽或不好聽的話,都隨便你了,即使我不同意你說的話,我也會(huì)誓死捍衛(wèi)你說話的權(quán)利??蠢唬?nbsp;
@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命令的幫助信息。地球人都能看懂,我就不多說了。我在網(wǎng)上曾經(jīng)找了很長(zhǎng)時(shí)間這三個(gè)命令的教程,但都不理想,基本都是照搬的幫助信息。我想在自己完全掌握了這兩個(gè)命令后,一定要寫一篇用自己的文字總結(jié)出來的for、set和shift教程(關(guān)于shift命令,后面介紹批處理的參數(shù)時(shí)還將涉及到),一定會(huì)的,這是我的心愿之一!需要注意的一點(diǎn)是,這三個(gè)命令的幫助里 ,介紹的都比較死板,雖然也舉了一些例子,但這是遠(yuǎn)遠(yuǎn)不夠的。要掌握這兩個(gè)命令,最需要的就是耐心!沒寫錯(cuò),就是耐心。光是認(rèn)真看完它們的幫助文字就已經(jīng)需要足夠的耐心了,要進(jìn)一步練習(xí)領(lǐng)會(huì)這兩個(gè)命令,難道不需要更大的耐心?實(shí)戰(zhàn)練習(xí)的機(jī)會(huì)我會(huì)留給你的,關(guān)鍵還是那句話,看你有沒有耐心去研究了??纯蠢?nbsp;
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)境變量。是不是看的頭都大了?又忘了寫在第一章第一段的那句話(靜下心來!),你應(yīng)該能體會(huì)到學(xué)習(xí)這兩個(gè)命令所需要的耐心了吧。就如同去愛一個(gè)人,你得學(xué)會(huì)寬容,打不得罵不得,用你寬大的胸懷去包容她的一切,即使你發(fā)現(xiàn)愛她的過程如看上面代碼的過程一樣讓你頭大,但你還是得愛下去----愛需要理由嗎?不需要嗎?需要嗎?不需要嗎……等到風(fēng)平浪靜后,最直觀的收獲就是,你的耐心變的前所未有的充足,面對(duì)她的復(fù)雜和善變,你自己會(huì)處變不驚,以自己的方式去從容應(yīng)付曾經(jīng)應(yīng)付不了的場(chǎng)面,即使到最后一身傷痕,也會(huì)感慨曾經(jīng)的舉動(dòng)有多么偉大。
沒錯(cuò),這就是批處理的魅力,這就是愛的魅力。讓你受了傷還感謝傷你的人。這種感覺就好象在自己最喜歡的音樂聲中被人強(qiáng)奸,痛并快樂著。
不得不再次重申一遍,各種DOS命令是批處理的BODY(我實(shí)在找不出一個(gè)更合適的詞來形容他們之間的關(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命令組合出來一個(gè)完美的批處理腳本,去讓它自動(dòng)完成你想要它做的事情。而靈活自如的編輯一個(gè)批處理腳本是建立在熟練掌握DOS命令的基礎(chǔ)上的,這已經(jīng)超出了本文的范疇,在此就不贅述了。
不知不覺中第三章已經(jīng)結(jié)束了。耳麥里傳來的依然是陳曉東的《比我幸?!?,每隔4分32秒就自動(dòng)重播。雖然我不并不很喜歡陳曉東,可這并不妨礙我喜歡音樂,喜歡這首描寫的如此讓人感慨的歌。請(qǐng)你一定要比我幸福/才不枉費(fèi)我狼狽退出/再痛也不說苦/愛不用抱歉來彌補(bǔ)/至少我能成全你的追逐/請(qǐng)記得你要比我幸福/才值得我對(duì)自己殘酷/我默默的倒數(shù)/最后再把你看清楚/看你眼里的我好饃糊/慢慢被放逐。我如同一個(gè)因年老失色而拉不到客的老妓女,絕望的徘徊在曾經(jīng)輝煌的紅燈區(qū),用一臉的木然瞟一眼來來去去的人群,默默的回憶自己并不光彩的過去,幻想自己將要面對(duì)的未來。直到看見那些幸福依偎在一起的情侶們,才突然間發(fā)現(xiàn)上帝的公平,和這種公平的殘忍。 可以說,批處理腳本中最重要的幾個(gè)命令我都沒有給出如echo或if那樣比較詳細(xì)的介紹,原因我已經(jīng)說了,因?yàn)槲乙彩莻€(gè)菜,我也不太懂----但我正在學(xué)!你呢?今天又去了一趟圖書館,淘金一樣發(fā)現(xiàn)了一本叫《DOS批文件》的東東,藏在一個(gè)角落里落滿了灰,五本摞一起就跟磚頭一樣厚了。大概翻了一下,里面介紹了很多比較底層和基礎(chǔ)的東西,雖然從思路上講,已經(jīng)有點(diǎn)time out了,很多東西已經(jīng)基本沒有利用的價(jià)值(這就是信息時(shí)代的更新速度),但還是很值得看的。于是打算下午淘過來,放假回去了再好好研究一番,連同那幾個(gè)不熟悉的命令一起搞熟了,再續(xù)寫這篇教程。我始終堅(jiān)信,沒有最好只有更好。
但是很可惜,等到下午再去的時(shí)候,圖書館樓梯口已經(jīng)立了一個(gè)牌子,上面寫著out of service----人家這學(xué)期的工作結(jié)束了。于是回到宿舍打算繼續(xù)寫第四章,正在這時(shí)又得到一個(gè)“振奮人心”的消息:期末考試有一科掛了,而且是全班第一----這一門整個(gè)班里就掛了我一個(gè)。郁悶的情緒剎那間涌上心頭,整個(gè)世界仿佛都變成黑的了。食堂和小賣部已經(jīng)陸續(xù)關(guān)門,學(xué)校里的人越來越少,迎面過來的幾個(gè)同學(xué)也都一身行李,忙碌著準(zhǔn)備回家過年,內(nèi)心的孤寂和失落如同夏日里暴雨前的烏云,迅速而不可抗拒的占領(lǐng)了心里每一個(gè)角落。迎著一月的冷風(fēng)我一個(gè)人在天橋上發(fā)呆,還能怎么樣,連期末考試都應(yīng)付不了的失敗男人。
“課間休息”時(shí)間好象長(zhǎng)了點(diǎn),呵呵,上課了!從這一章開始,將詳細(xì)介紹批處理中常用的幾個(gè)組合命令和管道命令。這些命令雖然不是必須的,如同愛一個(gè)人時(shí)不一定非得每天去陪,但如果少了這個(gè)過程,事情就會(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版本所支持的所有非隱含命令,但你只能看到最后的那些命令,前面的早就一閃而過了,如何解決這個(gè)問題?看例十三:
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來共同達(dá)到目的的。這里先簡(jiǎn)單介紹一下help命令和more命令,對(duì)理解|命令的用法有很大幫助。
11.1、help命令。其實(shí)這個(gè)命令是不需要多說的,但在上述例子中help命令的用法比較特殊,直接在DOS提示符下輸入help命令,結(jié)果是讓DOS顯示其所支持的所有非隱含命令,而在其他地方。
相關(guān)文章
XCOPY只拷貝當(dāng)天文件的實(shí)現(xiàn)代碼
最近由于需要備份一些文件,一般只需要備份當(dāng)前的文件就可以了,聽過xcopy支持這個(gè)方法,代碼也比較簡(jiǎn)單特分享下,方便需要的朋友2014-04-04Windows批處理文件(.bat和.cmd)及區(qū)別詳解
批處理文件是一種沒有什么固定格式的文件,他可以處理一條或者多條命令,文件的擴(kuò)展名是:.cmd或者.bat,文本里面的每一行就是一條處理指令,雙擊運(yùn)行它的時(shí)候,Windows就會(huì)調(diào)用cmd.exe去運(yùn)行,這篇文章主要介紹Windows批處理文件(.bat和.cmd)詳解,需要的朋友可以參考下2022-10-10寫一個(gè)bat批處理文件啟動(dòng)windows進(jìn)程和延時(shí)關(guān)閉的代碼
一個(gè)實(shí)現(xiàn)啟動(dòng)windows進(jìn)程和延時(shí)關(guān)閉的bat批處理文件,用于打開IE與關(guān)閉IE,學(xué)習(xí)批處理的朋友可以參考下。2010-11-11將c:\windows.復(fù)制到當(dāng)前目錄并顯示進(jìn)度的批處理文件
將c:\windows.復(fù)制到當(dāng)前目錄并顯示進(jìn)度的批處理文件...2007-08-08