bat/cmd批處理程序設(shè)計教程_第1頁
bat/cmd批處理程序設(shè)計教程_第2頁
bat/cmd批處理程序設(shè)計教程_第3頁
bat/cmd批處理程序設(shè)計教程_第4頁
bat/cmd批處理程序設(shè)計教程_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

bat/cmd批處理程序設(shè)計教程

、彳是一篇技術(shù)教程,我真心誠意會用很簡單的文官表達(dá)清楚自己的意思,只要你四咨就

運^矮看懂,就矮皆到知漢我寫這篇教程的目的,是讓每一個看逑這些文容的朋友記傻

一句祜:如果愛可“線上事情度的更簡單,那么就讓它簡單吧!看這篇教程的方法,就

是慢!慢慢的,也同品一#茗茶,你會發(fā)現(xiàn)很多〃前就在眼前的東曲突然度的很遙遠(yuǎn),而嘀些

很遙遠(yuǎn)的東曲卻又突然回到了眼前。

先概述一下批處理是個什么東東。批處理的定義,至今我也沒鋪給出一個合適的■一?眾多

高手們也都祓拾出一?一反正我不知還一一看了我也不一定信服一一一我是個菜鳥,咨然就更不用

說了;但我想總轉(zhuǎn)出一個由較合適豺,而且我也相信商己可“抽它解祥的很清楚,讓更多的

菜鳥都知道這是個什么東東,你用這個東東可以干什么事幡。或裨你會因為這篇文章而“無條

件愛上批處理‘,那么我的目的就達(dá)到了?一一我就是要讓你愛上它,我就這么拽,你矮怎么

著??真的,愛密時候就這么拽,就是這么沒理由,就是這么不要臉!真的!

接改我的理解,批處理的本質(zhì),是一堰DOS命令按一定順潺排列而彩成的集合。批處理文

件是無格式的文本文件,它包含一條或多條命4%它的文件擴(kuò)展名為.bat或.cmdo在命令

提示下鍵入批處理文件的名存,或渚務(wù)去孩批處理文件,系鉉就會調(diào)用Cmd.exe按簸該文件

中各個命令出現(xiàn)的順序來逐個運行它們。使用批處理文件(也被稔粉比處理程用或腳本),可

總簡化日?;蛑貜?fù)性佞務(wù)。些綏我們的這個股本的金要向客是介拈批處理在入侵中一些實際運

用,例如我們后面要提到的用批處理文件來給系銃打補丁、批量植入后門程序明

OK,neverclaverandgettobusiness(閑話歹說言歸正傳)。批處理,也稱為批處理

腳本,英文祥為BATCH,批處理文件后輟BAT就取徜前三個冬母。它的萄成汶省固定格式,

只要遵守以下這條就。k了:每一行可視名一個命令,每個命令里可以含多條各命令,從第一

行升的執(zhí)行,直到最后一行秸束,它運行的平臺是DOS。批處理密一個很鮮颯的特點:使用

方便靈活,罰鏘強大,自動化程度嬴我不想讓自己寫的教程拈燥無味,國必牽彼到代碼(批

處理的肉客算是代碼吧?)的問題瘁來就是祜嫖的,很歹嘀人健面對滿屏幕的代碼而替下心美

所以我會用很多簡單實用的制各讓裱這篇教程的朋友去體會批處理的那四射的魅力,感受

它那若靈精怪的性格,不知不覺中愛上批處嫂暈,怎么又是愛?到底批處理而愛嘀什么關(guān)系?

答案:沒嘀?。﹐再說句“用沙:要號略批處理,DOS基礎(chǔ)一定要牢!當(dāng)然腦各靈活也是很

重要的一方面。

俐一、先給出一個最easy的批處理腳本讓人索和它混個臉抽,將下面的幾行命令保存必

name.bat然后執(zhí)行(*4后文中只給出代碼,保存和執(zhí)任方式類似):

pingsz.tencent.com>a.txt

pingszl.tencent.com>>a.txt

pingsz2.tencent.com>>a.txt

pingsz3.tencent.com>>a.txt

pingsz4.tencent.com>>a.txt

pingsz5.tencent.com>>a.txt

pingsz6.tencent.com>>a.txt

pingsz7.tencent.com>>a.txt

exit

是不是都健看的怪?是不是很easy?但它的作用卻是很實用的,執(zhí)行這個批處理啟,可以

在你的當(dāng)前盤建立一個名為a.txt的文件,它里面祀錄的信息可以幫助你迅速找到速度最快的

QQ服務(wù)器,從而遠(yuǎn)離”從服務(wù)器中轉(zhuǎn)“那一痛苦的過程。這里〉的意思,是把前面命令得到的

東曲放到后面所給的地方,>>的作用,和〉的相同,區(qū)別是把秸果追加到前一行得出的錯累的

后面,具體徜說是下一行,而前面一行命名得出的拮果將保留,這科可T更這個a.txt文件越

來越大(想到也何搞破壞了??)。Bytheway,這個批處理逐可以和其他命4捺合,搞成

免金自幼化判斷服務(wù)器速度的東東,執(zhí)行后直接顯示速度最快的服務(wù)器IP,是不是很爽?后面

逐將簿細(xì)介拈。

倒工再給出一個已住過時的你|各(a.bat):

@echooff

ifexistC:\Progra-l\Tencent\AD\*.gif

delC:\Progra~l\Tencent\AD\*.gif

為什么說逡是個逑時的俐多呢?很簡單,國君現(xiàn)在已羥幾乎沒苗人用帶廣告的QQ了,所

“1它幾乎用不上了。但曾羥它渴作用是不可小窺的:叫除QQ的廣告,社對巷桓千干凈凈。逡

里用的地址是QQ的默認(rèn)安裝地址,默認(rèn)批處理文件名曷a.bat,你咨迷可包根據(jù)情況@行修

改。在這個腳本中使用了if命令,使得它可“!達(dá)到適時判斷和刪除廣告囹片的數(shù)票,你只需要

不關(guān)閉命令執(zhí)行后的DOS窗口,不按CTRL+C強行終止命令,它就一直盥視是否由廣告囹片

(QQ也再不新查看自己的廣告是杏薇刪除)。當(dāng)然這個腳走占用你一點點內(nèi)存,呵呵。

倒三,使用批處理腳本查是否中冰河。腳本內(nèi)容也下:

@echooff

Netstat-a-n>a.txt

typea.txt|findn7626"&&echo"恭喜你,你中了冰河扃毒!'

dela.txt

Pause&exit

這里利用了netstat命令,檢查所嘀的網(wǎng)絡(luò)端口狀態(tài),只需要你清楚常見木馬所使用的端

口燃微艮easy的判斷出來是否被人種了冰河。然這不是確定的,因曷冰河默認(rèn)的笫口7626,

免金可“螭人修改。這里介餡遍只是方法和思藤這里介拈的是方法和思路端做改劫,就度成

可包檢查其他木馬的腳冷了,再次勁一下,加進(jìn)去參數(shù)和薨口&信息列袤文件后,就度成自幼

檢測所南木馬的腳牽了。呵呵,是不是很過癮?腳本中逐利用了殂合命令&&和管道命令,后

面將簿徇介殆。

俐四,借批處理商勁清除系鉉垓圾,腳牽也下:

@echooff

ifexistc:\windows\temp\*.*delc:\windows\temp\*.*

ifexistc:\windows\Tempor~l\*.*delc:\windows\Tempor~l\*.*

ifexistc:\windows\History\*.*delc:\windows\History\"」

ifexistc:\windows\recent\*.*delc:\windows\recent\*.*

將”[上腳本內(nèi)容保存到autoexec.bat里,每次開機時就把系銃垓生給自動刪除了。這里

需要短意兩點:二DOS系次特衣文件名,鮑4就出現(xiàn)了Temporal這個東東;工可根據(jù)

自己的實際慵況進(jìn)行改動,使其符合自己的要救怎么樣,看到這里,你對批處理腳本是不是

已羥省直興?越了?是不是發(fā)現(xiàn)自己已徑慢慢愛上了這個東東?別高興的太早,愛不是一件簡單

的事,它也秤犍帶給你快樂和幸福,咨迷也餡讓你痛苦的想去跳糕也果你知道很難迷敢徒像

豺活,I服了YOUI徒徒劈力吧,也許到最后你豕一定得到愛愛(奠的點這可觸,愛過的人都

知道),但你可“M體會到整個愛的過程,就是由此>酸、苦和麻,電沒南甜人知道。為什么會

把批處理和愛情扯上關(guān)系?不是我無腳,也不是國曷這樣寫南裝多歹,原因藥二:其一,批處

理和愛情嗡很多相同的地方用/地方我即老山的行話解釋示湘我不懷殿自己的表達(dá)第力,

而是事情本身就示其說清楚),說了=沒說,但用地薄人都知道的愛情一tM(愛情是什么?

我TM怎么知遒!?。?沒準(zhǔn)你心里一下就亮堂了,事建功倍,何樂而不曷?其二,我這段時

間我態(tài)不是很繇,感冒或燧頭疼鼻塞,但金要迷是成慵上楮神摧殘,搞的人煩透了,借寫教程

之際感慨幾句,大家就全醫(yī)買狗皮膏帶了,免金可以若略不看(也評逐真省點數(shù)果-一系至孑

讓你看著看著就睡著了,把送磕了來找我報銷醫(yī)藥費)。說不定下次的教程中大家運會看到楊

生裱無忌等金老前輩邕下的英雄們。

看過第一章的朋友,一定對批處理省了初步的印象,知道它到底是用來干什么的了。但你

知道運用批處理的精髓在哪里嗎?其實很簡單:思路要靈活!諛嘀微不列的,只嘀想不列的。

這和愛慵就布點不同了,出易愛情的世界是兩個人的世界,一感1慵愿不研愛懦(補殺:那叫單

戀。)而枇處理卻是一個人的天堂,你可△邠解婚,沒嚙達(dá)不列的境界!

批處理看史來雜亂無章,但它的邏猾性之強,匏對木比其他程序語言(也匯編)低,電果

你寫的腳群是T齪麻,雖綏每一行命4嘟正流,但從及執(zhí)行到尾后,不一定得到你想要的轉(zhuǎn)

果,也許是一屏幕的Badcommandorfailnameo

這又而愛慵市了共同點:按步驟來羥營,酸夕或增多的步驟都可然導(dǎo)致不想看見的轉(zhuǎn)累。

陷入愛河的朋友,相信祓曲系用■定這句,舌的。我的愛慵批處理,輸出的轉(zhuǎn)果不是Badcommand

orfailname,屏幕是這么顯示的「你的愛情不是肉部或外部命令,也不是可運行的程格或

批處理文件。然后就是先標(biāo)不停閃幼,等待這下一次鏘族的輸入。

從第一章丹胎,將由淺入深的介砧批處理中常用的命令,很多常見DOS命令在他處理腳牽

中南運廣運的應(yīng)用,它們是批處理腳本的BODY都合,但批處理比DOS更靈活多樣,更具備

自幼化要目姍比處理,DOS一定要藥比修才牘的基礎(chǔ)。這里只耕述一些比較少用(相對來

說)的DOS命令,常用命令也COPY、DIR等就不做介裕了(這些看似簡單的命令實際復(fù)雜

的很,我怕自己都說不清乾?。﹐

下面就畀的我們才比處理唐習(xí)之旅吧。

目錄

第T批處理基礎(chǔ)

第一節(jié)常用批處理內(nèi)都命叁簡介

第二節(jié)登用魅珠符星

第二章DOS循球:for命公鋒解

第三章FOR命公中的變量

第四章批處理中的度量

第五章界面微舒

BAT腳本褊寫;

批處理應(yīng)用編人介敗巧

%-*拙一理健礎(chǔ)

第一節(jié)、常用批處理內(nèi)部命令簡介

批處理定義:頑名思義,批處理文件是將一系列命令按一定的順序集合為一個可執(zhí)行的文本文件,其#

展名辦BAT或者CMD。這些命令饒稱批處理命令。

小知識:可〃在鍵盤上按下Ctrl+C徂合鍵來強行將止一個批處理的執(zhí)行過程。

了解了大慨意思后,我們正式殲胎號習(xí).先看一個簡單的例歲

@echooff

echoHelloWorld!

pause

把上面的3條命令保存與文件test.bat或者test.cmd然后執(zhí)行

他就會在屏幕上鬼示”【下二行話

HelloWorld!

蒲按住意鍵徒篌.??

這就是一個簡單世處理文件了,這個批處理文件一共就用了2條命令"echo"軸"pause"處第一個特殊

符號?@"

從上面這個簡單的枇處理中,我們可“或現(xiàn)其實批處理就是運用一些含南特殊意義的符號和一些究成指定

功線的命令徂合而就那么在批處理中有多少這樣的特殊符號知功飾命令呢?我們現(xiàn)在就來仔細(xì)了解一下

一些最常用的!

枇處理的常見命令(未列舉的命令還比孩多,這里只創(chuàng)舉部分代碼)

1、REM和::

2、ECHO和@

3、PAUSE

4、ERRORLEVEL

5、TITLE

6、COLOR

7、mode配置系胡彳殳備

8、GOTO和:

9、FIND

10、START

11、assoc和ftype

12、pushd和popd

13、CALL

14、shift

15、IF

16、setlocal與夜量延遲

17、ATTRIB顯示或更改文件扃性

介紹命令3

1、REM和::

REM那金群命令,一般用來給程洋加上拉解,該命令后的優(yōu)容不被執(zhí)行,但犍回顯。

其次::也可“迫到rem的演群作用,而且更簡浩前效但用的也需要海意:

第一,但何〃冒號:外頭的號符行在批處理中都被視作標(biāo)號,而直接忽略其后妁所南內(nèi)容。

為數(shù)標(biāo)號:冒號后緊跟一個〃益母數(shù)容升頭的密符串,got。語句可〃識別。

無數(shù)標(biāo)號:置號后緊跟一個孤有母教室的一個特殊符號,got。無垓識別的標(biāo)號,可自鋌到康釋作用,所

〃::常破用作拄稀符號,其實:+也可宏拉群作用。

第二,與rem不同的是::后的字符行在執(zhí)行時不會回顯無論是否用echoon打并命令行回顯狀蒞齒

處命令解釋器系認(rèn)為他是一個市數(shù)的命令行就此點來看,rem在某些場合下將比::更為適用;另外,

rem可“I用于config.sys文件中。

行內(nèi)拄群格式:%演群內(nèi)農(nóng)%(不常用,同時迷表示一個嗖量,慎用)

2、ECHO和@

@合存放在命令前將關(guān)閉該命令回顯,無論此時echo是否為打開狀態(tài)。

echo命令的作用列舉也下:

(1)打井回顯或關(guān)閉回顯功健

格式:echo[{on|off}]

曲果想笑閉“ECHOOFF”命令行自身的顯示,則需要在該命令行前加上“@”。

(2)顯示圖前ECHO微置狀態(tài)

格式:echo

(3)輸出提示信息

格式:ECHO信息內(nèi)容

上述是ECHO命令常見的三種用法,也是大家熟悉和會用的,但作辦DOS命令曲金者你還應(yīng)該知道

下面的技巧:

(4)關(guān)閉DOS命令提示符

在DOS提示符狀態(tài)下鍵入ECHOOFF,健夠關(guān)閉DOS提示符的顯示使屏幕只留下光標(biāo),直至鍵入

ECHOON,梃示符才會重新出現(xiàn)。

(5)輸出安行,即相咨孑輸入一個回車

格式:ECHO.

值得注意的是命令行中豺.”要緊跟在ECHO后面中間系健布空格,否則“.”將被當(dāng)作提示信息輸出

到屏幕。另外“.”可〃用,:;”/[']+等但一符號替代。

命令ECHO.輸出的回車,徑DOS管道轉(zhuǎn)向可作為其它命令的輸入,比也echojtime即相當(dāng)孑在

TIME命令執(zhí)行后稔出一個回車。所“M執(zhí)行時系魏會在顯示當(dāng)前時間后,自切遨回到DOS提示苻狀態(tài)

(6)答復(fù)命令中的提問

格式:ECHO答復(fù)語|命令文件名

上述格式可自用孑簡化一些需要人機對話的命令(也:CHKDSK/F;FORMATDrive:;del*.*)的操作,

它是通過DOS管道命令把ECHO命令輸出的預(yù)置答復(fù)語作為人機對話命令的輸入,下面的例臺就相當(dāng)孑

在調(diào)用妁命令出現(xiàn)人機對話時輸入V回車:

C:>ECHOY|CHKDSK/F

C:>ECHOY|DELA:*.*

(7)建立新文件或增加文件均容

格式:ECHO爻件肉容〉爻件名

ECHO文件內(nèi)容>>文件名

例也:

C:>ECHO@ECHOOFF>AUTOEXEC.BAT建立自動批處理文件

C:>ECHOC:\CPAV\BOOTSAFE>>AUTOEXEC.BAT向自動枇處理文件中追力口內(nèi)容

C:>TYPEAUTOEXEC.BAT顯示該自動批處理文件

@ECHOOFF

C:\CPAV\BOOTSAFE

(8)向打印楣俞出打印內(nèi)容或打印控制碼

格式:ECHO打印機控制碼〉;PRN

ECHO打印內(nèi)容》;PRN

下面的例3是向M-1724打印機輸入打印控制碼。<Alt>156是按住Alt鍵在小鍵盤鍵入156,類似情

況保此凄推:

C:>ECHO+156+42+116>;PRN(輸入下劃役命令FS*t)

C:>ECHO[email=+155@]+155@>;PRN[/email](輸.人初拾4匕命令ESC@)

C:>ECHO.>;PRN(換行)

(9)使喇叭鳴響

C:>ECHOAG

“人G”是在dos窗G中用Ctrl+G或Alt+007輸入,輸入多個人G可G聲生多聲鳴響。使用方法是直接將

其加入批處理文件中或做成批處理爻件調(diào)用。

這里的“AG”屬于特殊符號的使用,請看專文后面的章節(jié)

3、PAUSE

PAUSE,既游戲的人都知道,暫停的意思

在這里就屬停止系嫁命令的執(zhí)行并顯示下面的內(nèi)架

倒:

PAUSE

運行顯示:

請按住意鍵徒犢...

要顯示其他提示詒,可“這樣用:

Echo其也提示話&pause>nul

4、errorlevel

程并返回碼

echo%errorlevel%

每個命令運行籍束,可〃用這個命令行格式查看逡回碼

用孑判斷剛才的命令是否執(zhí)行成功

默認(rèn)位合0,一般命令執(zhí)行出錯會超errorlevel合1

5、title

板置cmd窗口的標(biāo)題

指令格式:title[新標(biāo)題]#可.2看到cmd窗口的標(biāo)題欄嗖了

6、COLOR

諛置默認(rèn)的控制臺前景和背茶顏色。

指令格式:COLOR[attr]

attr指定控制臺輸出的顏色屬性

顏色屬性由曲個十六進(jìn)制教室指

定-第一個處背累,第二個則管理員:命令提示符

發(fā)直默認(rèn)的控制臺前景■和背景顏色。

前累。每個數(shù)室可〃為〃下但何LOR[attr)

值之一:attr指定控制臺輸出的顏色屬性

0=國色8=灰色'屬牌翳吉颼膘番皤EdY為背景,第二個則為

里8

藍(lán)色

1=藍(lán)色9=淡藍(lán)色1色9

髯A,

2=綠色A=淡綠色淡

色B

C紅

3=湖藍(lán)色B=淡餞綠色出

D紫

,色

紅色E黃

4=C=淡紅色色

F白

5=紫色D=淡紫色

6=黃色E=淡黃色?暴鬻有您手隹自爹夔以屋魚今盒將顏色吸、嗎E妙啟動時

為顏色。這個值來直輸痙制臺囪口、/T給令行開關(guān)或

7二白色F=亮白色efaultColor注冊表值。

如半段南玲定侵何參數(shù),該命令用相同的前景和道景顏色來執(zhí)行COLOR命令,COLOR命令

SERRORLEUEL設(shè)置為1。

列如:“COLORfc"在亮白色上產(chǎn)生死紅色

會將顏色還原到CMD.EXE啟動時

的顏色。這個飽來自當(dāng)前控制臺窗口、/T月關(guān)或

Defaultcolor處冊袤值。

也累用相同的前累和背累顏色來執(zhí)行COLOR命令,COLOR命令

會將ERRORLEVEL被暹君1。

"COLORfc"在亮白色上產(chǎn)笠亮紅色

7、mode酉已置系院武備

配置系就或備。

串行口:MODECOMm[:][BAUD=b][PARITY=p][DATA=d][STOP=s]

[to=on|off][xon=on|off][odsr=on|off]

[octs=on|off][dtr=on|off|hs]

[rts=cn|off|hs|tg][idsr=on|off]

被備狀態(tài):MODE[device][/STATUS]

打印重定句:MODELPTn[:]=C0Mm[:]

選定代碼員:MODECON[:]CPSELECT=yyy

代碼項狀態(tài):MODECON[:]CP[/STATUS]

顯示模式:MODECON[;][COLS-c][LINES-n]

去鍵率MODECON[:][RATE=rDELAY=d]

例:

modeconcols=113lines=15&color9f

此命令超置DOS窗口大?。?5行,113列

8、GOTO和:

GOTO會點編程的朋友就會知道這是魏您的意思。

在批處理中允許力:XXX”來何建一個標(biāo)號,然后用GOTOXXX魏轉(zhuǎn)到標(biāo)號:XXX處,然后軌行標(biāo)號后的

命令。

向:

if{%1}=={}gotonoparms

if"%2n==""gotonoparms

標(biāo)簽的名字可〃隨便鋌,但是最焰是前意義的容符串啦,前加個冒號用來袤示這個室符串是標(biāo)簽,got。

命令就是根據(jù)這個冒號(:)來尋找下一步破到到那里?;辗饽弦恍┱f明這樣你別人看起來才會理解你的

意囹痂

例:

@echooff

:start

set/avar+=1

echo%var%

if%var%leq3GOTOstart

pause

運行顯示:

1

2

3

4

10、start命令

批處理中調(diào)用外部程序的命令(該外部程序在新窗口中運行,批處理程序徒模往下執(zhí)行,系理會外部程

序的運行狀況),也累直接運行外部程序則必須等外部程序完成后才徒殘執(zhí)行剩下的指令

例:startexplorerd:\

倜用資源管理器并打桿D盤

11、assoc和ftype

文件關(guān)聯(lián)

assoc德盤文件擴(kuò)展名關(guān)聯(lián),關(guān)聯(lián)豺文件類型,

ftype被矍文件類型關(guān)聯(lián),美聯(lián)封執(zhí)行程序和參數(shù)

當(dāng)你雙擊一個.txt文件時,windows并不是根據(jù).txt直接判斷用notepad.exe打殲

而是先判斷.txt屬孑txtfil屋文件類型

再調(diào)用txtfile關(guān)聯(lián)的命令行txtfiIe=%SystemRoot%\system32\NOTEPAD.EXE%1

可這在"文件夾選項一"文件類處里修改這2種關(guān)聯(lián)

assoc#顯示所南'文件廣展名'美聯(lián)

assoc.txt#顯示.txt代表的文件類型’,彳吉票顯示.txt=txtfile

assoc.doc#顯示.doc代表袍文件類型,,秸累顯示.doc=Word.Document.8

assoc.exe#顯示6乂?代表的'文件類型’,夕吉果顯示.exe=exefile

ftype#里示所有文件類型,關(guān)聯(lián)

ftypeexefile#顯示exefile類型關(guān)聯(lián)的命令行,秸累顯示exefile="%l"%*

assoc.txt=Word.Document.8

筱置.txt當(dāng)word類型的文檔,可八4看到.txt文件的囹標(biāo)都變了

assoc.txt=txtfile

恢復(fù).txt的正褊關(guān)聯(lián)

ftypeexefile="%1"%*

恢復(fù)exefile的正施關(guān)朕

由票該關(guān)朕巳徑被破壞,可〃運行,再輸入這條命令

12、pushd和popd

切換咳前目錄

@echooff

c:&cd\&mdmp3#在C:\曼立mp3文件夾

mdd:\mp4#在D:\建立mp4文件夾

cd/dd:\mp4#更改易前目錄務(wù)d:\mp4

pushdc:\mp3#保存當(dāng)前目錄,并切換咨前目錄為c:\mp3

popd#恢復(fù)當(dāng)前目錄務(wù)剛才保存的d:\mp4

一般用處示大,在當(dāng)前目錄名曲角關(guān)時,會南電幫助。(dos編程中很痢用)

13、CALL

CALL命令可.4在枇處理執(zhí)行過程中調(diào)用另一個批處理,當(dāng)另一個才比處理執(zhí)行完后,再徒猿執(zhí)行原來的枇

處理

CALLcommand

調(diào)用一條枇處理命令,知直接執(zhí)行命令數(shù)累一樣,特殊情況下很菊用,比也度量的多極嵌套,見教程后

面。在批處理編程中,可必根據(jù)一關(guān)條件也成命令咨符串,用call可執(zhí)行該令符串,見例各。

CALL[drive:][path]filename[batch-parameters]

調(diào)用的其它批處理程樂filename參數(shù)必須具南.bat或.cmd獷晨名。

CALL:labelarguments

調(diào)用本文件的命令段,相當(dāng)孑臺程序。被調(diào)用的命令段“標(biāo)卷label界頭

〃金金goto:eof夕吉尾o

另外,批腳奉文走參數(shù)參照(%0、%1、等等)已也下改嗖:

批腳布里的%*指出所南的參數(shù)(也%1%2%3%4%5...)

批參數(shù)(%n)的替代已被增強。您可“1使用”1下話孩:(看示闞白的直接運行后面的例3)

%~1-蒯除引號(I,擴(kuò)充%1

%~fl-將%1獷充到一個憲金合格的路徑名

%~dl-僅將%1行先到一個驅(qū)動器號

%~pl-僅將%1於克到一個路徑

%~nl-僅將%1擴(kuò)光到一個文件名

%~xl-僅將%1擴(kuò)充到一個文件擴(kuò)展名

%~sl-擴(kuò)充的路徑指含為短名

%~al-將%1獷先到文件屬性

%~tl-將%1^克到文件的日期/時間

%~zl-將%1擴(kuò)充到文件的大小

%~$PATH:1-查找列在PATH環(huán)境度量的目錄,并將%1

擴(kuò)充到找到的第一個完金合格的名稱。也累環(huán)境

變量名未被定義,或者沒前找到文件,此徂合鍵會

擴(kuò)充到安室符串

可“殂合修定符來取得多重秸臬

%~dpl?R將%1廣展到驅(qū)動器號和路徑

%~nxl一只將%1才廣展到文件名和獷晨名

%~dp$PATH:l-在列在PATH妹境嗖量中的目錄里查找%1,

并擴(kuò)展到找到的第一個文件的驅(qū)動器號和路在。

%~ftzal?將%1擴(kuò)展到類似DIR的輸出行。

-在上面徜創(chuàng)各中,%1和PATH可?4被其他有被數(shù)值替掾

%~詒該被一個宿放參數(shù)號碼終止,%。~修定符系錨限%*使用

伍意:參知廣充時系理會參數(shù)所代表的文件是否奠實存在,均〃咳前目錄進(jìn)行獷展

要理解上面的知祖,下面的向各很關(guān)鍵。

例:

@echooff

Echo產(chǎn)生一個總時文件>tmp.txt

Rem下行先保存當(dāng)前0錄,再將c:\windows被的當(dāng)葡目錄

pushdc:\windows

Call:subtmp.txt

Rem下行恢復(fù)前次的當(dāng)前目錄

Popd

Call:subtmp.txt

pause

Deltmp.txt

exit

:sub

Echo刪除引號:%~1

Echo擴(kuò)充到路徑:%~fl

Echo擴(kuò)充到一個驅(qū)動器號:%~dl

Echo擴(kuò)充到一個路徑:%~pl

Echo擴(kuò)充到一個文件名:%~nl

Echo擴(kuò)充到一個文件擴(kuò)展名:%~xl

Echo擴(kuò)充的絡(luò)徑指含藥短名:%~sl

Echo擴(kuò)充到文件屬性:%~al

Echo"充到文件的日期/時間:%~tl

Echo擴(kuò)充到文件的大?。海zl

Echo擴(kuò)展到驅(qū)動器號和路徑:%~dpl

Echo"展到文件名彳口獷晨名:%~nxl

Echo擴(kuò)展到類似DIR的輸出行:%~ftzal

Echo.

Goto:eof

setaa=123456

setcmdstr=echo%aa%

call%cmdstr%

pause

4例中電累米用call,而直接運彳*J%cmdstr%,將顯示彳吉票%aa%,而不是123456

14、shift

更改枇處理文件中可替換參數(shù)的位置。

SHIFT[/n]

心累命令擴(kuò)展名被啟用,SHIFT命令文持/n命令行并關(guān);該命令行開關(guān)告訴

命令從第n個參數(shù)外胎移位;n介孑零和八之間。例姒

SHIFT/2

會將%3移位到%2,將%4移便到%3,等等;并且不影響%0和%lo

15、IF

IF條件判斷話旬,諳核格式也下:

IF[NOT]ERRORLEVELnumbercommand

IF[NOT]stringl==string2command

IF[NOT]EXISTfilenamecommand

下面逐一介餡,更皆細(xì)的分折請看后面章節(jié)。

(1)IF[NOT]ERRORLEVELnumbercommand

IFERRORLEVEL這個句各必須放在某一個命令的后面,執(zhí)行命令后由IFERRORLEVEL來判斷命令的返

回值。

Number的數(shù)字取值初渤0~255,判斷時值的挪列順序應(yīng)該由人到小。逡回的值大孑等孑指定的值時,

^f牛成立

向:

@echooff

dirc:

rem退出代碼的>二1就巡至標(biāo)題1處執(zhí)行,>二0就魏至標(biāo)題0處執(zhí)行

IFERRORLEVEL1goto1

IFERRORLEVEL0goto0

Rem上面的曲行不可委換位置,否則失敗了也顯示成功。

:0

echo命冬執(zhí)行成功!

Rem程莊執(zhí)行完畢他至標(biāo)題exit處退出

gotoexit

:1

echo命令執(zhí)行失敗!

Rem程彥執(zhí)行完畢覦至標(biāo)題exit處退出

gotoexit

:exit

pause

運行顯示:命令執(zhí)行成功!

(2)IF[NOT]stringl==string2command

stringl和string2都辦字符的數(shù)據(jù),英文內(nèi)相符的大小與將看作不同,這個條件中的等孑號必,須是的個

(彳色對相等的意思)

條件相等后即執(zhí)行■后面的command

檢測當(dāng)前變量的值做出判斷,合了防止室符串中含前空梏,可用U下格式

if[NOT]{stringl}=={string2}command

if[NOT]|stringl]==[string2]command

if[NOT],stringl"=="string2"command

度種竊玄實除上將括號余名茂嗚威字符串徜一部多了;只要等號左右的邊一致就行了,比也下面的寫診

就不行:

if{stringl}==[string2]command

(3)IF[NOT]EXISTfilenamecommand

EXISTfilename卷文件或目錄存在的意思

echooff

IFEXISTautoexec.batecho文件存在!

IFnotEXISTautoexec.batecho文件不存在!

這個枇處理大家可兒放在C盤和D盤令別執(zhí)行,看看效果

16、setlocal與嗖量延遲

4條內(nèi)容引用[英施出品]的枇處理教程:

要想進(jìn)階,變量延遲是必過的一關(guān)!所北這一割舍希鱉你能認(rèn)真看。

為了更熱的說明問題,我們先引入一個制多。

例1:

@echooff

seta=4

seta=5&echo%a%

pause

彳吉票;4

解也:必什么是4而樂是5呢?在echo之前明明已羥把瘦量a的值改成5了?

讓我們免了解一下批處理運行命令的機制:

批處理讀取命令時是按行讀取的(另外例電for命令等,其后用一對圓括號閉合的所語語句也咨作一行),

在處理之前要完成必要的預(yù)處理工作,這其中就包括對該行命令中的度量殿債。我們現(xiàn)在匆折一下俐1,

批處理在運行到這句“seta=5&echo%a%”之前,先把這一句整旬犢取并做了預(yù)處理一一對嗖量a喊了

值,那么%a%劣線就是4了!(沒痛扮什么,枇處理就是這樣做的。)

而當(dāng)了健夠感知環(huán)境或量的動態(tài)或化,批處理謾計了寞量延遲。簡單來說,在讀取了一條完整的話句之

后,不立即對該行的嗖量喊飽,而會在某個單條語句執(zhí)行之前再進(jìn)行戚值,也就是說,延遲”了對嗖量的

殿值。

那么也何升啟度量延遲呢?度量延遲又需要授意什么呢?舉小向3說明一下:

向2:

@echooff

setlocalenabledelayedexpansion

seta=4

seta=5&echo!a!

pause

能累:5

解說:啟動了嗖量延遲,得到了正確答案。變量延遲劫了動量旬是setlocalenabledelayedexpansion”,

并且變量要用一對嘆號“!!”括起來(短意要用英文的嘆號),否則就沒胸寞量延遲的坡果。

分折一下例2,省先"setlocalenabledelayedexpansion”并啟嗖量延遲,然后"seta=4”先給嗖量a賊

疝為

4,“seta=5&echo4!”這句是給嗖量a款值君5并輸出(由孑啟動了嗖量延遲,斬〃枇處理然夠感知

到動態(tài)笠化,即不是先給孩行或量賦值,而是在運行過程中合展量底值,鹵此此時a的值就是5了)。

再舉一個例各鞏固一下。

砌3:

@echooff

setlocalenabledelayedexpansion

for/I%%iin(1,1,5)do(

seta=%%i

echo!a!

)

pause

彳吉票:

1

2

3

4

5

解說:舉例并啟了變量延遲并用“!!”將雷量擴(kuò)起來,國此得到我們預(yù)期的?吉果。電果不用變量延遲會出現(xiàn)

什么轉(zhuǎn)累呢?秸累是這樣的:

ECHO處孑關(guān)閉狀態(tài)。

ECHO處孑關(guān)閉狀態(tài)。

ECHO處孑關(guān)閉狀態(tài)。

ECHO處孑關(guān)閉狀態(tài)。

ECHO處孑關(guān)閉狀態(tài)。

即流前感知到for語句中蜀動態(tài)度化。

提示:在設(shè)嘀開啟咬量延遲的情況下,某條命令行中的安量改安,必須到下一條命令才然體現(xiàn)。這一點

也可”4加八4利用,看俐3。

例:委接兩個嗖量的值,且系用中間嗖量

@echooff

::目的:妾換的個度量的值,但是承受用幅時度量

::Codeby懶得勤快2014-10-31[email=CMD@cmd]CMD@cmd[/email]

setvarl=abc

setvar2=123

echo委換前:varl=%varl%var2=%var2%

setvarl=%var2%&setvar2=%varl%

echo委換后:varl=%varl%var2=%var2%

pause

17、ATTRIB顯示或更改爻件屬性

ATTRIB[-R|-R][+A|-A][+S|-S][+H|-H][[drive:][path]filename][/S[/D]]

+謾矍屬性。

-清除屬性。

R只核文件屬性。

A存欄文件屬性。

S系虢文件屬怪。

H隱藏文件屬性。

[drive:][path][filename]

指定要處理的文件屬性。

/S處理當(dāng)前文件夾及其各文件夾中的匹配文件。

/D也處理文件夾。

WT

mdautorun

attrib+a+s+hautorun

上面的命令將建立文件夾autorun,然后將其謾君右檔、系紜隱藏屬性

第二節(jié)常用特殊符號

1、@命令行回顯屏蔽符

2、%批處理嗖量引導(dǎo)存

3、>重定向符

4、>>重定向符

5、<,>&、<&重定向符

6、|命令管道符

7、人轉(zhuǎn)義守符

8、&殂合命令

9、&&殂合命令

10、||徂合命令

11、"■合符串界定符

12、,逗號

13、;分號

14、()括號

15、!或嘆號

16、批處理中可舔會見到的其它特殊標(biāo)祀符:(略)

CR(OD)命令行拮束符

Escape(lB)ANSI轉(zhuǎn)義令符引導(dǎo)符

Space(20)您用的參數(shù)界定符

Tao(09);=不常用的參數(shù)界定符

+COPY命令文件遂接符

*?文件通配符

/參數(shù)升關(guān)引導(dǎo)符

:枇處理標(biāo)簽引導(dǎo)符

1、@命令行回顯屏蔽符

這個合符在批處理中的意思是關(guān)閉當(dāng)前行的回顯。我們從前幾裸知道

ECHOOFF可“關(guān)閉掉整個批處理命令的回顯,但系偏關(guān)掉ECHOOFF這個命令現(xiàn)在我們在ECHOOFF

這個命令前加個@,就可U達(dá)到前密命令均不回顯的要求

2、%批處理嗖量引導(dǎo)符

這個石芻、號嚴(yán)格來說是籬不上命令的,它只是批處理中的參數(shù)而已(多個%一麴使用的情況除外,△后近

將祥徇介餡)O

利用變量用%var%,調(diào)用程序外部參數(shù)用%1至%9等等

%0%1%2%3%4%5%6%7%8%9%*君命令行傳遞給批處理的參數(shù)

%0批處理文件奉身,包括完整的路在和獷展名

%1第一個參數(shù)

%9第九個參數(shù)

%*從第一個參數(shù)棄胎的所前參數(shù)

參數(shù)%0具南特殊的功能,可門調(diào)用批處理自身,北達(dá)到批處理本身循環(huán)的目的,也可“[復(fù)制爻件自身等

例:最簡單的復(fù)制文件自身的方法

copy%0d:\wind.bat

小技巧:添加行為短釋

%短釋內(nèi)容%(可〃用作行內(nèi)短釋,不健出現(xiàn)重定向符號和管道符號)

與什么這樣呢?此時可金拜內(nèi)容”其實被當(dāng)作度量,其值是變的,故只熱海群作用,不過這種用法容易出

現(xiàn)諾在錯俁,一般不用。

3、>重定向符

輸出重定向命令

這個密符的意思是佬遞并且覆蓋,他所鋌的作用是將運行的秸果佬遞到后面的魚圍(后邊可“1是文件,

也可〃是默認(rèn)的系貌控制臺)

在NT系列命令行中,重定向的作用初圉由整個命令行您變的單個命令語句,受到了命令方隔符

&,&&,11和話句塊的制為限制。

比也:

使用命令;echohello>l.txt將建立文件1.txt,由容粉hello"(混意行尾南一支松)

使用命令:echohello>l.txt將建立文件l.txt,內(nèi)容辦hello“(海意行尾沒痢安格)

4、>>重定向符

輸出重定向命令

這個符號的作用和〉南點類似,但他們的區(qū)別是>>是佬遞群在文件的末尾追加,而〉是覆蓋

用我同上

同移拿l.txt破例各

使用命令:

echohello>l.txt

echoworld>>l.txt

這時候l.txt內(nèi)容也下:

hello

world

5、<、>&、<&重定向符

這三個命令也是管道命令,但它們一般不常用,你只需要知道一下就。k了,當(dāng)然痣果想仔擁商究的話,

可自己查一下資料■<,(4人已查過,網(wǎng)上也查示到相關(guān)資料)

<,輸入量定向命令,從文件中犢入命令輸入,而不是從鍵盤中犢入。

@echooff

echo2005-05-01>temp.txt

date<temp.txt

deltemp.txt

這樣就可,,!示等待輸入直接修改咨前日期

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

<&,剛必和>&相反,從一個句柄揍取輸入并將其寫入到另一個旬柄輸出中。

常用句柄:0、1、2,未定義句柄:3-9

l>nul袤示禁止輸出正確的信息

2>nul表示弟止輸出錯候信息。

其中的1與2都是代表票個數(shù)據(jù)流輸入輸出的地址(NTCMD稱之/句柄,MSDOS稱之各超備)。

句柄0:標(biāo)準(zhǔn)輸入stdin,鍵盤輸入

句柄1:標(biāo)淮輸出stdout,輸出到命令提示符窗口(console,代碼君CON)

句柄2:標(biāo)灌錯鋒stderr,輸出到命令提示符窗口(console,代碼扮CON)

其中的stdin可被<重定向,stdout可被>、>>重定頷

我們已徑知道犢取文布中的內(nèi)容可人用for命令,但也累只需要讀取第一行用for命令就痢點麻煩。簡單

的辦法由下:

@echooff

set/pstr=<%0

echo%str%

pause

運行顯示枇?處理文件自身的第一行:@echooff

6、|命令管道符

格式:第一條命令|第二條命令[|第三條命令…]

將第一條命令的浩果作的第二條命令的參數(shù)來使用,祀得在unix中這種方式很常見。

俐也:

dirc:\|find"txt"

〃上命令是:查找C:\所南,并發(fā)現(xiàn)TXT室符串。

FIND的功健請用FIND/?自行查看

在示使format的自幼格式化參數(shù)時,我是這樣來包動格式化A盤的

echoy|formata:/s/q/v:system

用過format的都知道,再格盤時要輸入y來確認(rèn)是否格盤,這個命令前加上echoy和和合符來將echo

y的彳吉票佬給format命令

從而達(dá)到自動輸入y的目的

(這條命令南危害性,測試時謔慎重)

7、人轉(zhuǎn)義合符

八是對特殊符號<,>.&的前導(dǎo)官符,在命令中他將〃上3個怒號的特殊功健去掉,僅僅閂把他們當(dāng)成符號

而不使用他們的特殊意義c

比也

echotestA>l.txt

夕吉果則是:test>l.txt

他沒痢追加在l.txt里,呵呵。只是顯示了出來

另外,此轉(zhuǎn)義容符述可U用作繪行符號。

舉個簡單的例3:

@echooff

echo英雄八

是八

男人

pause

示用多說,島已試一下就明白了。

治什么造義咨符放在行尾可〃鴕到讀行符的作用呢?原包很簡單,包為每行家尾運有一個看不見的符號,

即回車符,造義令符便孑行星時就讓回車符夫致了,從而空到了繪行的作用。

8、&徂合命令

造法:第一條命令&第二條命令[&第三條命令..]

&、&&、|閡祖合命令,碩名思義,就是可。把多個命令祖臺起來當(dāng)一個命令來執(zhí)行。這在枇處理腳本

里是允許的,而且用的孤常廣泛。國必批處理認(rèn)行不認(rèn)命令數(shù)目。

這個符號允許在一行中使用2個〃上不同的命令,當(dāng)?shù)谝粋€命令執(zhí)行失敗了,也不影響后邊的命令物行。

這里&兩邊的命令是順序執(zhí)行的,從前彳金后執(zhí)行。

比也:

dirz:\&diry:\&dirc:\

〃上命令會連狡里示乙y,c盤的內(nèi)容,不理會該盤是否志在

9、&&殂合命金

語法:第一條命令&&第二條命令[&&第三條命令

用這種方孩可“響時執(zhí)行多條命令,當(dāng)磁到執(zhí)行出錯的命令后將不執(zhí)行后面的命令,心累一直沒前出錯

則一直找行完所南命令

這個命令和上邊的類似,但區(qū)別是,第一個命令失敗時,后邊的命令也不會執(zhí)行

dirz:\&&diry:\&&dirc:\

10、II組合命令

話該:第一條命令I(lǐng)I第二條命令[||第三條命令…]

用這種方法可“響時執(zhí)行多條命令,當(dāng)一條命令大敗后才執(zhí)行第二條命令,當(dāng)磁到執(zhí)行正熊的命令后將

示執(zhí)行后面的命令,如果沒南出現(xiàn)正確的命令則一直執(zhí)行完斬密命令;

提示:徂合命令知重定向命令一空使用必須演意優(yōu)先被

管道命令的優(yōu)先級高孑重定向命令,重定向命令的優(yōu)先彳&高孑組臺命令

問題:把C盤和D盤的文件和文件夾列出到a.txt文件中。著向:

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

這樣執(zhí)行后a.txt里丹為D盤的信息!的什么?國君殂合命令的優(yōu)先敏諛嘀重定向命令的優(yōu)先級高!所U

這句在執(zhí)行時將奉行今成這西部方:dirc:\和dird:\>a.txt,而井樂是也你想的這曲?郡今:dirc:\&&

dird:\^>a.txto要使用徂合命金&&達(dá)到題目的耍點,必須得拉么寫:

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

這樣,俵據(jù)優(yōu)先級高低,DOS將挺這句話芻喊“4下兩部令:dirc:\>a.txt和dird:\>>a.txto例十八

中的幾句的差別比款特殊,值得好烙商究體會一下。

當(dāng)然這里還可〃利用&命令(自己怨一下道理哦):

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

[這個也可“用dirc:\;d:\>>a.txt來實施|

11,""皆符串界定符

雙引號允許在室符串中包含空梏,進(jìn)入一個特殊目錄可“用力下方法

cd"programfiles"

cdprogra-l

cdpro*

U上三種方法都可“進(jìn)入programfiles這個目錄

12、,逗號

逗號拘醫(yī)孑空梏,在某些情況下“,”可“用來當(dāng)做空格使

比心

dir,c:\

[3、;芻、號

行號’,當(dāng)命令相同時,可△將示同目標(biāo)用;來隔離,但執(zhí)行數(shù)半系嗖,電執(zhí)行過程中女生錯假,則只遨

回錯誤報告,但程序仍會執(zhí)行。(南人說樂會徒筱執(zhí)行,其實測試一下就知道了)

比也:

dirc:\;d:\;e:\;z:\

〃上命令招咨孑

dirc:\

dird:\

dire:\

dirf:\

也累其中z盤未存在,運行顯示:系鄉(xiāng)完找不到指定的路徑。然后終止命令的執(zhí)行。

你]:dirc:\;d:\;e:\l.txt

〃上命令相當(dāng)孑

dirc:\

dird:\

dire:\l.txt

其中文件e:\l.txt不存在,但e盤存在,南錯族提示,但命令仍會執(zhí)行。

與什么?心累目標(biāo)路徑未存在,則帑止執(zhí)行;也累路徑存在,僅文件不存在,則徒犢執(zhí)行。

就祓這些了!各隹嘀什么意見請回貼!嗡什么疑問請到BAT委流區(qū)或貼!下一節(jié)改進(jìn)!

14.()拈號

小括號在批處理褊程中市特殊的作用,左右括號必須成對使用,括號中可“包括多行命令,這些命令將

被看成一個整體,視與一條命令行。

括號在for語句和if話句中常見,用來嵌套使用循環(huán)或茶件語句,

溫馨提示

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

最新文檔

評論

0/150

提交評論