bat/cmd批处理程序设计教程_第1页
bat/cmd批处理程序设计教程_第2页
bat/cmd批处理程序设计教程_第3页
bat/cmd批处理程序设计教程_第4页
bat/cmd批处理程序设计教程_第5页
已阅读5页,还剩53页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

bat/cmd批处理程序设计教程

、彳是一篇技术教程,我真心诚意会用很简单的文官表达清楚自己的意思,只要你四咨就

运^矮看懂,就矮皆到知汉我写这篇教程的目的,是让每一个看逑这些文容的朋友记傻

一句祜:如果爱可“线上事情度的更简单,那么就让它简单吧!看这篇教程的方法,就

是慢!慢慢的,也同品一#茗茶,你会发现很多〃前就在眼前的东曲突然度的很遥远,而嘀些

很遥远的东曲却又突然回到了眼前。

先概述一下批处理是个什么东东。批处理的定义,至今我也没铺给出一个合适的■一•众多

高手们也都祓拾出一•一反正我不知还一一看了我也不一定信服一一一我是个菜鸟,咨然就更不用

说了;但我想总转出一个由较合适豺,而且我也相信商己可“抽它解祥的很清楚,让更多的

菜鸟都知道这是个什么东东,你用这个东东可以干什么事幡。或裨你会因为这篇文章而“无条

件爱上批处理‘,那么我的目的就达到了•一一我就是要让你爱上它,我就这么拽,你矮怎么

着??真的,爱密时候就这么拽,就是这么没理由,就是这么不要脸!真的!

接改我的理解,批处理的本质,是一堰DOS命令按一定顺潺排列而彩成的集合。批处理文

件是无格式的文本文件,它包含一条或多条命4%它的文件扩展名为.bat或.cmdo在命令

提示下键入批处理文件的名存,或渚务去孩批处理文件,系铉就会调用Cmd.exe按簸该文件

中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被稔粉比处理程用或脚本),可

总简化日常或重复性佞务。些绥我们的这个股本的金要向客是介拈批处理在入侵中一些实际运

用,例如我们后面要提到的用批处理文件来给系铳打补丁、批量植入后门程序明

OK,neverclaverandgettobusiness(闲话歹说言归正传)。批处理,也称为批处理

脚本,英文祥为BATCH,批处理文件后辍BAT就取徜前三个冬母。它的萄成汶省固定格式,

只要遵守以下这条就。k了:每一行可视名一个命令,每个命令里可以含多条各命令,从第一

行升的执行,直到最后一行秸束,它运行的平台是DOS。批处理密一个很鲜飒的特点:使用

方便灵活,罚锵强大,自动化程度嬴我不想让自己写的教程拈燥无味,国必牵彼到代码(批

处理的肉客算是代码吧?)的问题瘁来就是祜嫖的,很歹嘀人健面对满屏幕的代码而替下心美

所以我会用很多简单实用的制各让裱这篇教程的朋友去体会批处理的那四射的魅力,感受

它那若灵精怪的性格,不知不觉中爱上批处嫂晕,怎么又是爱?到底批处理而爱嘀什么关系?

答案:没嘀!)o再说句“用沙:要号略批处理,DOS基础一定要牢!当然脑各灵活也是很

重要的一方面。

俐一、先给出一个最easy的批处理脚本让人索和它混个脸抽,将下面的几行命令保存必

name.bat然后执行(*4后文中只给出代码,保存和执任方式类似):

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?但它的作用却是很实用的,执行这个批处理启,可以

在你的当前盘建立一个名为a.txt的文件,它里面祀录的信息可以帮助你迅速找到速度最快的

QQ服务器,从而远离”从服务器中转“那一痛苦的过程。这里〉的意思,是把前面命令得到的

东曲放到后面所给的地方,>>的作用,和〉的相同,区别是把秸果追加到前一行得出的错累的

后面,具体徜说是下一行,而前面一行命名得出的拮果将保留,这科可T更这个a.txt文件越

来越大(想到也何搞破坏了??)。Bytheway,这个批处理逐可以和其他命4捺合,搞成

免金自幼化判断服务器速度的东东,执行后直接显示速度最快的服务器IP,是不是很爽?后面

逐将簿细介拈。

倒工再给出一个已住过时的你|各(a.bat):

@echooff

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

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

为什么说逡是个逑时的俐多呢?很简单,国君现在已羟几乎没苗人用带广告的QQ了,所

“1它几乎用不上了。但曾羟它渴作用是不可小窥的:叫除QQ的广告,社对巷桓千干净净。逡

里用的地址是QQ的默认安装地址,默认批处理文件名曷a.bat,你咨迷可包根据情况@行修

改。在这个脚本中使用了if命令,使得它可“!达到适时判断和删除广告囹片的数票,你只需要

不关闭命令执行后的DOS窗口,不按CTRL+C强行终止命令,它就一直盥视是否由广告囹片

(QQ也再不新查看自己的广告是杏薇删除)。当然这个脚走占用你一点点内存,呵呵。

倒三,使用批处理脚本查是否中冰河。脚本内容也下:

@echooff

Netstat-a-n>a.txt

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

dela.txt

Pause&exit

这里利用了netstat命令,检查所嘀的网络端口状态,只需要你清楚常见木马所使用的端

口燃微艮easy的判断出来是否被人种了冰河。然这不是确定的,因曷冰河默认的笫口7626,

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

可包检查其他木马的脚冷了,再次劲一下,加进去参数和薨口&信息列袤文件后,就度成自幼

检测所南木马的脚牵了。呵呵,是不是很过瘾?脚本中逐利用了殂合命令&&和管道命令,后

面将簿徇介殆。

俐四,借批处理商劲清除系铉垓圾,脚牵也下:

@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\*.*

将”[上脚本内容保存到autoexec.bat里,每次开机时就把系铳垓生给自动删除了。这里

需要短意两点:二DOS系次特衣文件名,鲍4就出现了Temporal这个东东;工可根据

自己的实际慵况进行改动,使其符合自己的要救怎么样,看到这里,你对批处理脚本是不是

已羟省直兴•越了?是不是发现自己已径慢慢爱上了这个东东?别高兴的太早,爱不是一件简单

的事,它也秤犍带给你快乐和幸福,咨迷也馅让你痛苦的想去跳糕也果你知道很难迷敢徒像

豺活,I服了YOUI徒徒劈力吧,也许到最后你豕一定得到爱爱(奠的点这可触,爱过的人都

知道),但你可“M体会到整个爱的过程,就是由此>酸、苦和麻,电没南甜人知道。为什么会

把批处理和爱情扯上关系?不是我无脚,也不是国曷这样写南装多歹,原因药二:其一,批处

理和爱情嗡很多相同的地方用/地方我即老山的行话解释示湘我不怀殿自己的表达第力,

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

我TM怎么知遒!!),没准你心里一下就亮堂了,事建功倍,何乐而不曷?其二,我这段时

间我态不是很繇,感冒或燧头疼鼻塞,但金要迷是成慵上楮神摧残,搞的人烦透了,借写教程

之际感慨几句,大家就全医买狗皮膏带了,免金可以若略不看(也评逐真省点数果-一系至孑

让你看着看着就睡着了,把送磕了来找我报销医药费)。说不定下次的教程中大家运会看到杨

生裱无忌等金老前辈邕下的英雄们。

看过第一章的朋友,一定对批处理省了初步的印象,知道它到底是用来干什么的了。但你

知道运用批处理的精髓在哪里吗?其实很简单:思路要灵活!谀嘀微不列的,只嘀想不列的。

这和爱慵就布点不同了,出易爱情的世界是两个人的世界,一感1慵愿不研爱懦(补杀:那叫单

恋。)而枇处理却是一个人的天堂,你可△邠解婚,没啮达不列的境界!

批处理看史来杂乱无章,但它的逻猾性之强,匏对木比其他程序语言(也汇编)低,电果

你写的脚群是T龊麻,虽绥每一行命4嘟正流,但从及执行到尾后,不一定得到你想要的转

果,也许是一屏幕的Badcommandorfailnameo

这又而爱慵市了共同点:按步骤来羟营,酸夕或增多的步骤都可然导致不想看见的转累。

陷入爱河的朋友,相信祓曲系用■定这句,舌的。我的爱慵批处理,输出的转果不是Badcommand

orfailname,屏幕是这么显示的「你的爱情不是肉部或外部命令,也不是可运行的程格或

批处理文件。然后就是先标不停闪幼,等待这下一次锵族的输入。

从第一章丹胎,将由浅入深的介砧批处理中常用的命令,很多常见DOS命令在他处理脚牵

中南运广运的应用,它们是批处理脚本的BODY都合,但批处理比DOS更灵活多样,更具备

自幼化要目姗比处理,DOS一定要药比修才牍的基础。这里只耕述一些比较少用(相对来

说)的DOS命令,常用命令也COPY、DIR等就不做介裕了(这些看似简单的命令实际复杂

的很,我怕自己都说不清乾!)o

下面就畀的我们才比处理唐习之旅吧。

目录

第T批处理基础

第一节常用批处理内都命叁简介

第二节登用魅珠符星

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

第三章FOR命公中的变量

第四章批处理中的度量

第五章界面微舒

BAT脚本褊写;

批处理应用编人介败巧

%-*拙一理健础

第一节、常用批处理内部命令简介

批处理定义:顽名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其#

展名办BAT或者CMD。这些命令饶称批处理命令。

小知识:可〃在键盘上按下Ctrl+C徂合键来强行将止一个批处理的执行过程。

了解了大慨意思后,我们正式歼胎号习.先看一个简单的例岁

@echooff

echoHelloWorld!

pause

把上面的3条命令保存与文件test.bat或者test.cmd然后执行

他就会在屏幕上鬼示”【下二行话

HelloWorld!

蒲按住意键徒篌.••

这就是一个简单世处理文件了,这个批处理文件一共就用了2条命令"echo"轴"pause"处第一个特殊

符号・@"

从上面这个简单的枇处理中,我们可“或现其实批处理就是运用一些含南特殊意义的符号和一些究成指定

功线的命令徂合而就那么在批处理中有多少这样的特殊符号知功饰命令呢?我们现在就来仔细了解一下

一些最常用的!

枇处理的常见命令(未列举的命令还比孩多,这里只创举部分代码)

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那金群命令,一般用来给程洋加上拉解,该命令后的优容不被执行,但犍回显。

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

第一,但何〃冒号:外头的号符行在批处理中都被视作标号,而直接忽略其后妁所南内容。

为数标号:冒号后紧跟一个〃益母数容升头的密符串,got。语句可〃识别。

无数标号:置号后紧跟一个孤有母教室的一个特殊符号,got。无垓识别的标号,可自铤到康释作用,所

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

第二,与rem不同的是::后的字符行在执行时不会回显无论是否用echoon打并命令行回显状莅齿

处命令解释器系认为他是一个市数的命令行就此点来看,rem在某些场合下将比::更为适用;另外,

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

行内拄群格式:%演群内农%(不常用,同时迷表示一个嗖量,慎用)

2、ECHO和@

@合存放在命令前将关闭该命令回显,无论此时echo是否为打开状态。

echo命令的作用列举也下:

(1)打井回显或关闭回显功健

格式:echo[{on|off}]

曲果想笑闭“ECHOOFF”命令行自身的显示,则需要在该命令行前加上“@”。

(2)显示图前ECHO微置状态

格式:echo

(3)输出提示信息

格式:ECHO信息内容

上述是ECHO命令常见的三种用法,也是大家熟悉和会用的,但作办DOS命令曲金者你还应该知道

下面的技巧:

(4)关闭DOS命令提示符

在DOS提示符状态下键入ECHOOFF,健够关闭DOS提示符的显示使屏幕只留下光标,直至键入

ECHOON,梃示符才会重新出现。

(5)输出安行,即相咨孑输入一个回车

格式:ECHO.

值得注意的是命令行中豺.”要紧跟在ECHO后面中间系健布空格,否则“.”将被当作提示信息输出

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

命令ECHO.输出的回车,径DOS管道转向可作为其它命令的输入,比也echojtime即相当孑在

TIME命令执行后稔出一个回车。所“M执行时系魏会在显示当前时间后,自切遨回到DOS提示苻状态

(6)答复命令中的提问

格式:ECHO答复语|命令文件名

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

它是通过DOS管道命令把ECHO命令输出的预置答复语作为人机对话命令的输入,下面的例台就相当孑

在调用妁命令出现人机对话时输入V回车:

C:>ECHOY|CHKDSK/F

C:>ECHOY|DELA:*.*

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

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

ECHO文件内容>>文件名

例也:

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

C:>ECHOC:\CPAV\BOOTSAFE>>AUTOEXEC.BAT向自动枇处理文件中追力口内容

C:>TYPEAUTOEXEC.BAT显示该自动批处理文件

@ECHOOFF

C:\CPAV\BOOTSAFE

(8)向打印楣俞出打印内容或打印控制码

格式:ECHO打印机控制码〉;PRN

ECHO打印内容》;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声生多声鸣响。使用方法是直接将

其加入批处理文件中或做成批处理爻件调用。

这里的“AG”属于特殊符号的使用,请看专文后面的章节

3、PAUSE

PAUSE,既游戏的人都知道,暂停的意思

在这里就属停止系嫁命令的执行并显示下面的内架

倒:

PAUSE

运行显示:

请按住意键徒犊...

要显示其他提示诒,可“这样用:

Echo其也提示话&pause>nul

4、errorlevel

程并返回码

echo%errorlevel%

每个命令运行籍束,可〃用这个命令行格式查看逡回码

用孑判断刚才的命令是否执行成功

默认位合0,一般命令执行出错会超errorlevel合1

5、title

板置cmd窗口的标题

指令格式:title[新标题]#可.2看到cmd窗口的标题栏嗖了

6、COLOR

谀置默认的控制台前景和背茶颜色。

指令格式:COLOR[attr]

attr指定控制台输出的颜色属性

颜色属性由曲个十六进制教室指

定-第一个处背累,第二个则管理员:命令提示符

发直默认的控制台前景■和背景颜色。

前累。每个数室可〃为〃下但何LOR[attr)

值之一:attr指定控制台输出的颜色属性

0=国色8=灰色'属牌翳吉飕膘番皤EdY为背景,第二个则为

里8

蓝色

1=蓝色9=淡蓝色1色9

髯A,

2=绿色A=淡绿色淡

绿

色B

绿

C红

3=湖蓝色B=淡饯绿色出

D紫

,色

红色E黄

4=C=淡红色色

F白

5=紫色D=淡紫色

6=黄色E=淡黄色?暴鬻有您手隹自爹夔以屋鱼今盒将颜色吸、吗E妙启动时

为颜色。这个值来直输痉制台囱口、/T给令行开关或

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

如半段南玲定侵何参数,该命令用相同的前景和道景颜色来执行COLOR命令,COLOR命令

SERRORLEUEL设置为1。

列如:“COLORfc"在亮白色上产生死红色

会将颜色还原到CMD.EXE启动时

的颜色。这个饱来自当前控制台窗口、/T月关或

Defaultcolor处册袤值。

也累用相同的前累和背累颜色来执行COLOR命令,COLOR命令

会将ERRORLEVEL被暹君1。

"COLORfc"在亮白色上产笠亮红色

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]

被备状态:MODE[device][/STATUS]

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

选定代码员:MODECON[:]CPSELECT=yyy

代码项状态:MODECON[:]CP[/STATUS]

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

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

例:

modeconcols=113lines=15&color9f

此命令超置DOS窗口大小:15行,113列

8、GOTO和:

GOTO会点编程的朋友就会知道这是魏您的意思。

在批处理中允许力:XXX”来何建一个标号,然后用GOTOXXX魏转到标号:XXX处,然后轨行标号后的

命令。

向:

if{%1}=={}gotonoparms

if"%2n==""gotonoparms

标签的名字可〃随便铤,但是最焰是前意义的容符串啦,前加个冒号用来袤示这个室符串是标签,got。

命令就是根据这个冒号(:)来寻找下一步破到到那里。徽封南一些说明这样你别人看起来才会理解你的

意囹痂

例:

@echooff

:start

set/avar+=1

echo%var%

if%var%leq3GOTOstart

pause

运行显示:

1

2

3

4

10、start命令

批处理中调用外部程序的命令(该外部程序在新窗口中运行,批处理程序徒模往下执行,系理会外部程

序的运行状况),也累直接运行外部程序则必须等外部程序完成后才徒残执行剩下的指令

例:startexplorerd:\

倜用资源管理器并打杆D盘

11、assoc和ftype

文件关联

assoc德盘文件扩展名关联,关联豺文件类型,

ftype被矍文件类型关联,美联封执行程序和参数

当你双击一个.txt文件时,windows并不是根据.txt直接判断用notepad.exe打歼

而是先判断.txt属孑txtfil屋文件类型

再调用txtfile关联的命令行txtfiIe=%SystemRoot%\system32\NOTEPAD.EXE%1

可这在"文件夹选项一"文件类处里修改这2种关联

assoc#显示所南'文件广展名'美联

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

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

assoc.exe#显示6乂®代表的'文件类型’,夕吉果显示.exe=exefile

ftype#里示所有文件类型,关联

ftypeexefile#显示exefile类型关联的命令行,秸累显示exefile="%l"%*

assoc.txt=Word.Document.8

筱置.txt当word类型的文档,可八4看到.txt文件的囹标都变了

assoc.txt=txtfile

恢复.txt的正褊关联

ftypeexefile="%1"%*

恢复exefile的正施关朕

由票该关朕巳径被破坏,可〃运行,再输入这条命令

12、pushd和popd

切换咳前目录

@echooff

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

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

cd/dd:\mp4#更改易前目录务d:\mp4

pushdc:\mp3#保存当前目录,并切换咨前目录为c:\mp3

popd#恢复当前目录务刚才保存的d:\mp4

一般用处示大,在当前目录名曲角关时,会南电帮助。(dos编程中很痢用)

13、CALL

CALL命令可.4在枇处理执行过程中调用另一个批处理,当另一个才比处理执行完后,再徒猿执行原来的枇

处理

CALLcommand

调用一条枇处理命令,知直接执行命令数累一样,特殊情况下很菊用,比也度量的多极嵌套,见教程后

面。在批处理编程中,可必根据一关条件也成命令咨符串,用call可执行该令符串,见例各。

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

调用的其它批处理程乐filename参数必须具南.bat或.cmd犷晨名。

CALL:labelarguments

调用本文件的命令段,相当孑台程序。被调用的命令段“标卷label界头

〃金金goto:eof夕吉尾o

另外,批脚奉文走参数参照(%0、%1、等等)已也下改嗖:

批脚布里的%*指出所南的参数(也%1%2%3%4%5...)

批参数(%n)的替代已被增强。您可“1使用”1下话孩:(看示阚白的直接运行后面的例3)

%~1-蒯除引号(I,扩充%1

%~fl-将%1犷充到一个宪金合格的路径名

%~dl-仅将%1行先到一个驱动器号

%~pl-仅将%1於克到一个路径

%~nl-仅将%1扩光到一个文件名

%~xl-仅将%1扩充到一个文件扩展名

%~sl-扩充的路径指含为短名

%~al-将%1犷先到文件属性

%~tl-将%1^克到文件的日期/时间

%~zl-将%1扩充到文件的大小

%~$PATH:1-查找列在PATH环境度量的目录,并将%1

扩充到找到的第一个完金合格的名称。也累环境

变量名未被定义,或者没前找到文件,此徂合键会

扩充到安室符串

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

%~dpl・R将%1广展到驱动器号和路径

%~nxl一只将%1才广展到文件名和犷晨名

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

并扩展到找到的第一个文件的驱动器号和路在。

%~ftzal・将%1扩展到类似DIR的输出行。

-在上面徜创各中,%1和PATH可・4被其他有被数值替掾

%~诒该被一个宿放参数号码终止,%。~修定符系锚限%*使用

伍意:参知广充时系理会参数所代表的文件是否奠实存在,均〃咳前目录进行犷展

要理解上面的知祖,下面的向各很关键。

例:

@echooff

Echo产生一个总时文件>tmp.txt

Rem下行先保存当前0录,再将c:\windows被的当葡目录

pushdc:\windows

Call:subtmp.txt

Rem下行恢复前次的当前目录

Popd

Call:subtmp.txt

pause

Deltmp.txt

exit

:sub

Echo删除引号:%~1

Echo扩充到路径:%~fl

Echo扩充到一个驱动器号:%~dl

Echo扩充到一个路径:%~pl

Echo扩充到一个文件名:%~nl

Echo扩充到一个文件扩展名:%~xl

Echo扩充的络径指含药短名:%~sl

Echo扩充到文件属性:%~al

Echo"充到文件的日期/时间:%~tl

Echo扩充到文件的大小:%~zl

Echo扩展到驱动器号和路径:%~dpl

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

Echo扩展到类似DIR的输出行:%~ftzal

Echo.

Goto:eof

setaa=123456

setcmdstr=echo%aa%

call%cmdstr%

pause

4例中电累米用call,而直接运彳*J%cmdstr%,将显示彳吉票%aa%,而不是123456

14、shift

更改枇处理文件中可替换参数的位置。

SHIFT[/n]

心累命令扩展名被启用,SHIFT命令文持/n命令行并关;该命令行开关告诉

命令从第n个参数外胎移位;n介孑零和八之间。例姒

SHIFT/2

会将%3移位到%2,将%4移便到%3,等等;并且不影响%0和%lo

15、IF

IF条件判断话旬,谙核格式也下:

IF[NOT]ERRORLEVELnumbercommand

IF[NOT]stringl==string2command

IF[NOT]EXISTfilenamecommand

下面逐一介馅,更皆细的分折请看后面章节。

(1)IF[NOT]ERRORLEVELnumbercommand

IFERRORLEVEL这个句各必须放在某一个命令的后面,执行命令后由IFERRORLEVEL来判断命令的返

回值。

Number的数字取值初渤0~255,判断时值的挪列顺序应该由人到小。逡回的值大孑等孑指定的值时,

^f牛成立

向:

@echooff

dirc:

rem退出代码的>二1就巡至标题1处执行,>二0就魏至标题0处执行

IFERRORLEVEL1goto1

IFERRORLEVEL0goto0

Rem上面的曲行不可委换位置,否则失败了也显示成功。

:0

echo命冬执行成功!

Rem程庄执行完毕他至标题exit处退出

gotoexit

:1

echo命令执行失败!

Rem程彦执行完毕觎至标题exit处退出

gotoexit

:exit

pause

运行显示:命令执行成功!

(2)IF[NOT]stringl==string2command

stringl和string2都办字符的数据,英文内相符的大小与将看作不同,这个条件中的等孑号必,须是的个

(彳色对相等的意思)

条件相等后即执行■后面的command

检测当前变量的值做出判断,合了防止室符串中含前空梏,可用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盘令别执行,看看效果

16、setlocal与嗖量延迟

4条内容引用[英施出品]的枇处理教程:

要想进阶,变量延迟是必过的一关!所北这一割舍希鳖你能认真看。

为了更热的说明问题,我们先引入一个制多。

例1:

@echooff

seta=4

seta=5&echo%a%

pause

彳吉票;4

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

让我们免了解一下批处理运行命令的机制:

批处理读取命令时是按行读取的(另外例电for命令等,其后用一对圆括号闭合的所语语句也咨作一行),

在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的度量殿债。我们现在匆折一下俐1,

批处理在运行到这句“seta=5&echo%a%”之前,先把这一句整旬犊取并做了预处理一一对嗖量a喊了

值,那么%a%劣线就是4了!(没痛扮什么,枇处理就是这样做的。)

而当了健够感知环境或量的动态或化,批处理谩计了寞量延迟。简单来说,在读取了一条完整的话句之

后,不立即对该行的嗖量喊饱,而会在某个单条语句执行之前再进行戚值,也就是说,延迟”了对嗖量的

殿值。

那么也何升启度量延迟呢?度量延迟又需要授意什么呢?举小向3说明一下:

向2:

@echooff

setlocalenabledelayedexpansion

seta=4

seta=5&echo!a!

pause

能累:5

解说:启动了嗖量延迟,得到了正确答案。变量延迟劫了动量旬是setlocalenabledelayedexpansion”,

并且变量要用一对叹号“!!”括起来(短意要用英文的叹号),否则就没胸寞量延迟的坡果。

分折一下例2,省先"setlocalenabledelayedexpansion”并启嗖量延迟,然后"seta=4”先给嗖量a贼

疝为

4,“seta=5&echo4!”这句是给嗖量a款值君5并输出(由孑启动了嗖量延迟,斩〃枇处理然够感知

到动态笠化,即不是先给孩行或量赋值,而是在运行过程中合展量底值,卤此此时a的值就是5了)。

再举一个例各巩固一下。

砌3:

@echooff

setlocalenabledelayedexpansion

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

seta=%%i

echo!a!

)

pause

彳吉票:

1

2

3

4

5

解说:举例并启了变量延迟并用“!!”将雷量扩起来,国此得到我们预期的?吉果。电果不用变量延迟会出现

什么转累呢?秸累是这样的:

ECHO处孑关闭状态。

ECHO处孑关闭状态。

ECHO处孑关闭状态。

ECHO处孑关闭状态。

ECHO处孑关闭状态。

即流前感知到for语句中蜀动态度化。

提示:在设嘀开启咬量延迟的情况下,某条命令行中的安量改安,必须到下一条命令才然体现。这一点

也可”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也处理文件夹。

WT

mdautorun

attrib+a+s+hautorun

上面的命令将建立文件夹autorun,然后将其谩君右档、系纭隐藏属性

第二节常用特殊符号

1、@命令行回显屏蔽符

2、%批处理嗖量引导存

3、>重定向符

4、>>重定向符

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

6、|命令管道符

7、人转义守符

8、&殂合命令

9、&&殂合命令

10、||徂合命令

11、"■合符串界定符

12、,逗号

13、;分号

14、()括号

15、!或叹号

16、批处理中可舔会见到的其它特殊标祀符:(略)

CR(OD)命令行拮束符

Escape(lB)ANSI转义令符引导符

Space(20)您用的参数界定符

Tao(09);=不常用的参数界定符

+COPY命令文件遂接符

*?文件通配符

/参数升关引导符

:枇处理标签引导符

1、@命令行回显屏蔽符

这个合符在批处理中的意思是关闭当前行的回显。我们从前几裸知道

ECHOOFF可“关闭掉整个批处理命令的回显,但系偏关掉ECHOOFF这个命令现在我们在ECHOOFF

这个命令前加个@,就可U达到前密命令均不回显的要求

2、%批处理嗖量引导符

这个石刍、号严格来说是篱不上命令的,它只是批处理中的参数而已(多个%一麴使用的情况除外,△后近

将祥徇介馅)O

利用变量用%var%,调用程序外部参数用%1至%9等等

%0%1%2%3%4%5%6%7%8%9%*君命令行传递给批处理的参数

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

%1第一个参数

%9第九个参数

%*从第一个参数弃胎的所前参数

参数%0具南特殊的功能,可门调用批处理自身,北达到批处理本身循环的目的,也可“[复制爻件自身等

例:最简单的复制文件自身的方法

copy%0d:\wind.bat

小技巧:添加行为短释

%短释内容%(可〃用作行内短释,不健出现重定向符号和管道符号)

与什么这样呢?此时可金拜内容”其实被当作度量,其值是变的,故只热海群作用,不过这种用法容易出

现诺在错俣,一般不用。

3、>重定向符

输出重定向命令

这个密符的意思是佬递并且覆盖,他所铤的作用是将运行的秸果佬递到后面的鱼围(后边可“1是文件,

也可〃是默认的系貌控制台)

在NT系列命令行中,重定向的作用初圉由整个命令行您变的单个命令语句,受到了命令方隔符

&,&&,11和话句块的制为限制。

比也:

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

使用命令:echohello>l.txt将建立文件l.txt,内容办hello“(海意行尾没痢安格)

4、>>重定向符

输出重定向命令

这个符号的作用和〉南点类似,但他们的区别是>>是佬递群在文件的末尾追加,而〉是覆盖

用我同上

同移拿l.txt破例各

使用命令:

echohello>l.txt

echoworld>>l.txt

这时候l.txt内容也下:

hello

world

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

这三个命令也是管道命令,但它们一般不常用,你只需要知道一下就。k了,当然痣果想仔拥商究的话,

可自己查一下资料■<,(4人已查过,网上也查示到相关资料)

<,输入量定向命令,从文件中犊入命令输入,而不是从键盘中犊入。

@echooff

echo2005-05-01>temp.txt

date<temp.txt

deltemp.txt

这样就可,,!示等待输入直接修改咨前日期

>&,将一个句柄的输出写入到另一个句柄的输入中。

<&,刚必和>&相反,从一个句柄揍取输入并将其写入到另一个旬柄输出中。

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

l>nul袤示禁止输出正确的信息

2>nul表示弟止输出错候信息。

其中的1与2都是代表票个数据流输入输出的地址(NTCMD称之/句柄,MSDOS称之各超备)。

句柄0:标准输入stdin,键盘输入

句柄1:标淮输出stdout,输出到命令提示符窗口(console,代码君CON)

句柄2:标灌错锋stderr,输出到命令提示符窗口(console,代码扮CON)

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

我们已径知道犊取文布中的内容可人用for命令,但也累只需要读取第一行用for命令就痢点麻烦。简单

的办法由下:

@echooff

set/pstr=<%0

echo%str%

pause

运行显示枇•处理文件自身的第一行:@echooff

6、|命令管道符

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

将第一条命令的浩果作的第二条命令的参数来使用,祀得在unix中这种方式很常见。

俐也:

dirc:\|find"txt"

〃上命令是:查找C:\所南,并发现TXT室符串。

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

在示使format的自幼格式化参数时,我是这样来包动格式化A盘的

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

用过format的都知道,再格盘时要输入y来确认是否格盘,这个命令前加上echoy和和合符来将echo

y的彳吉票佬给format命令

从而达到自动输入y的目的

(这条命令南危害性,测试时谑慎重)

7、人转义合符

八是对特殊符号<,>.&的前导官符,在命令中他将〃上3个怒号的特殊功健去掉,仅仅闩把他们当成符号

而不使用他们的特殊意义c

比也

echotestA>l.txt

夕吉果则是:test>l.txt

他没痢追加在l.txt里,呵呵。只是显示了出来

另外,此转义容符述可U用作绘行符号。

举个简单的例3:

@echooff

echo英雄八

是八

男人

pause

示用多说,岛已试一下就明白了。

治什么造义咨符放在行尾可〃鸵到读行符的作用呢?原包很简单,包为每行家尾运有一个看不见的符号,

即回车符,造义令符便孑行星时就让回车符夫致了,从而空到了绘行的作用。

8、&徂合命令

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

&、&&、|阂祖合命令,硕名思义,就是可。把多个命令祖台起来当一个命令来执行。这在枇处理脚本

里是允许的,而且用的孤常广泛。国必批处理认行不认命令数目。

这个符号允许在一行中使用2个〃上不同的命令,当第一个命令执行失败了,也不影响后边的命令物行。

这里&两边的命令是顺序执行的,从前彳金后执行。

比也:

dirz:\&diry:\&dirc:\

〃上命令会连狡里示乙y,c盘的内容,不理会该盘是否志在

9、&&殂合命金

语法:第一条命令&&第二条命令[&&第三条命令

用这种方孩可“响时执行多条命令,当磁到执行出错的命令后将不执行后面的命令,心累一直没前出错

则一直找行完所南命令

这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行

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

10、II组合命令

话该:第一条命令II第二条命令[||第三条命令…]

用这种方法可“响时执行多条命令,当一条命令大败后才执行第二条命令,当磁到执行正熊的命令后将

示执行后面的命令,如果没南出现正确的命令则一直执行完斩密命令;

提示:徂合命令知重定向命令一空使用必须演意优先被

管道命令的优先级高孑重定向命令,重定向命令的优先彳&高孑组台命令

问题:把C盘和D盘的文件和文件夹列出到a.txt文件中。着向:

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

这样执行后a.txt里丹为D盘的信息!的什么?国君殂合命令的优先敏谀嘀重定向命令的优先级高!所U

这句在执行时将奉行今成这西部方:dirc:\和dird:\>a.txt,而井乐是也你想的这曲•郡今:dirc:\&&

dird:\^>a.txto要使用徂合命金&&达到题目的耍点,必须得拉么写:

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

这样,俵据优先级高低,DOS将挺这句话刍喊“4下两部令:dirc:\>a.txt和dird:\>>a.txto例十八

中的几句的差别比款特殊,值得好烙商究体会一下。

当然这里还可〃利用&命令(自己怨一下道理哦):

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

[这个也可“用dirc:\;d:\>>a.txt来实施|

11,""皆符串界定符

双引号允许在室符串中包含空梏,进入一个特殊目录可“用力下方法

cd"programfiles"

cdprogra-l

cdpro*

U上三种方法都可“进入programfiles这个目录

12、,逗号

逗号拘医孑空梏,在某些情况下“,”可“用来当做空格使

比心

dir,c:\

[3、;刍、号

行号’,当命令相同时,可△将示同目标用;来隔离,但执行数半系嗖,电执行过程中女生错假,则只遨

回错误报告,但程序仍会执行。(南人说乐会徒筱执行,其实测试一下就知道了)

比也:

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

〃上命令招咨孑

dirc:\

dird:\

dire:\

dirf:\

也累其中z盘未存在,运行显示:系乡完找不到指定的路径。然后终止命令的执行。

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

〃上命令相当孑

dirc:\

dird:\

dire:\l.txt

其中文件e:\l.txt不存在,但e盘存在,南错族提示,但命令仍会执行。

与什么?心累目标路径未存在,则帑止执行;也累路径存在,仅文件不存在,则徒犊执行。

就祓这些了!各隹嘀什么意见请回贴!嗡什么疑问请到BAT委流区或贴!下一节改进!

14.()拈号

小括号在批处理褊程中市特殊的作用,左右括号必须成对使用,括号中可“包括多行命令,这些命令将

被看成一个整体,视与一条命令行。

括号在for语句和if话句中常见,用来嵌套使用循环或茶件语句,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论