Windows脚本bat编程基础Word格式.docx

上传人:b****1 文档编号:4901474 上传时间:2023-05-04 格式:DOCX 页数:26 大小:28.98KB
下载 相关 举报
Windows脚本bat编程基础Word格式.docx_第1页
第1页 / 共26页
Windows脚本bat编程基础Word格式.docx_第2页
第2页 / 共26页
Windows脚本bat编程基础Word格式.docx_第3页
第3页 / 共26页
Windows脚本bat编程基础Word格式.docx_第4页
第4页 / 共26页
Windows脚本bat编程基础Word格式.docx_第5页
第5页 / 共26页
Windows脚本bat编程基础Word格式.docx_第6页
第6页 / 共26页
Windows脚本bat编程基础Word格式.docx_第7页
第7页 / 共26页
Windows脚本bat编程基础Word格式.docx_第8页
第8页 / 共26页
Windows脚本bat编程基础Word格式.docx_第9页
第9页 / 共26页
Windows脚本bat编程基础Word格式.docx_第10页
第10页 / 共26页
Windows脚本bat编程基础Word格式.docx_第11页
第11页 / 共26页
Windows脚本bat编程基础Word格式.docx_第12页
第12页 / 共26页
Windows脚本bat编程基础Word格式.docx_第13页
第13页 / 共26页
Windows脚本bat编程基础Word格式.docx_第14页
第14页 / 共26页
Windows脚本bat编程基础Word格式.docx_第15页
第15页 / 共26页
Windows脚本bat编程基础Word格式.docx_第16页
第16页 / 共26页
Windows脚本bat编程基础Word格式.docx_第17页
第17页 / 共26页
Windows脚本bat编程基础Word格式.docx_第18页
第18页 / 共26页
Windows脚本bat编程基础Word格式.docx_第19页
第19页 / 共26页
Windows脚本bat编程基础Word格式.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Windows脚本bat编程基础Word格式.docx

《Windows脚本bat编程基础Word格式.docx》由会员分享,可在线阅读,更多相关《Windows脚本bat编程基础Word格式.docx(26页珍藏版)》请在冰点文库上搜索。

Windows脚本bat编程基础Word格式.docx

”/[\]+等任一符号替代。

命令ECHO.输出的回车,经DOS管道转向可以作为其它命令的输入,比如echo.|time即相当于在TIME命令执行后给出一个回车。

所以执行时系统会在显示当前时间后,自动返回到DOS提示符状态

(6)答复命令中的提问

ECHO答复语|命令文件名

上述格式可以用于简化一些需要人机对话的命令(如:

CHKDSK/F;

FORMATDrive:

del*.*)的操作,它是通过DOS管道命令把ECHO命令输出的预置答复语作为人机对话命令的输入。

下面的例子就相当于在调用的命令出现人机对话时输入“Y”回车:

C:

>

ECHOY|CHKDSK/F

ECHOY|DELA:

*.*

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

格式:

ECHO文件内容>

文件名

ECHO文件内容>

例如:

ECHO@ECHOOFF>

AUTOEXEC.BAT建立自动批处理文件

ECHOC:

\CPAV\BOOTSAFE>

AUTOEXEC.BAT向自动批处理文件中追加内容

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

@ECHOOFF

\CPAV\BOOTSAFE

PAUSE,暂停的意思,在这里是停止系统命令的执行并显示下面的内容。

例:

PAUSE

运行显示:

请按任意键继续...

要显示其他提示语,可以这样用:

Echo其他提示语&

pause>

nul

4、errorlevel

程序返回码

echo%errorlevel%

每个命令运行结束,可以用这个命令行格式查看返回码

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

默认值为0,一般命令执行出错会设errorlevel为1

5、GOTO和:

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

在批处理中允许以“:

XXX”来构建一个标号,然后用GOTOXXX跳转到标号:

XXX处,然后执行标号后的命令。

if{%1}=={}gotonoparms

if"

%2"

=="

"

gotonoparms

标签的名字可以随便起,但是最好是有意义的字符串啦,前加个冒号用来表示这个字符串是标签,goto命令就是根据这个冒号(:

)来寻找下一步跳到到那里。

最好有一些说明这样你别人看起来才会理解你的意图啊。

@echooff

start

set/avar+=1

echo%var%

if%var%leq3GOTOstart

pause

1

2

3

4

IF条件判断语句,语法格式如下:

IF[NOT]ERRORLEVELnumbercommand

IF[NOT]string1==string2command

IF[NOT]EXISTfilenamecommand

下面逐一介绍,更详细的分析请看后面章节。

(1)IF[NOT]ERRORLEVELnumbercommand

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

Number的数字取值范围0~255,判断时值的排列顺序应该由大到小。

返回的值大于等于指定的值时,条件成立

dirc:

rem退出代码为>

=1就跳至标题1处执行,>

=0就跳至标题0处执行

IFERRORLEVEL1goto1

IFERRORLEVEL0goto0

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

echo命令执行成功!

Rem程序执行完毕跳至标题exit处退出

gotoexit

echo命令执行失败!

exit

命令执行成功!

(2)IF[NOT]string1==string2command

string1和string2都为字符的数据,英文内字符的大小写将看作不同,这个条件中的等于号必须是两个(绝对相等的意思)

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

检测当前变量的值做出判断,为了防止字符串中含有空格,可用以下格式

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

if[NOT][string1]==[string2]command

if[NOT]"

string1"

string2"

command

这种写法实际上将括号或引号当成字符串的一部分了,只要等号左右两边一致就行了,比如下面的写法就不行:

if{string1}==[string2]command

(3)IF[NOT]EXISTfilenamecommand

EXISTfilename为文件或目录存在的意思

echooff

IFEXISTautoexec.batecho文件存在!

IFnotEXISTautoexec.batecho文件不存在!

这个批处理大家可以放在C盘和D盘分别执行,看看效果

例子:

setvar=我是值

请看setvar=我是值,这就是BAT直接在批处理中设置变量的方法!

set是命令 

 

var是变量名 

=号右边的"

我是值"

是变量的值

在批处理中我们要引用这个变就把var变量名用两个%(百分号)扩起来,如%var%

这种SET语法只能直接在BAT代码的提前赋予变量的值,有时候我们需要提供一个交互界面,让用户自己输入变量的值,然后我们在来根据这个值来做相应操作,现在就来说说这SET的这种语法,只需要加一个"

/P"

参数就可以了!

set/pvar=请输入变量的值:

if%var%==1echo您输入了1~_~

set/p是命令语法 

var是变量名 

=号右边的"

请输入变量的值:

"

,这个是提示语,不是变量的值了!

运行后,我们在提示语后面直接输入1,就会显示一行您输入了1。

使用set/?

查看SET的帮助我们发现SET除了上面讲的

SET[variable=[string]]

SET/Pvariable=[promptString]

这两种语法外,还有如下几种语法:

SET/Aexpression

环境变量替换已如下增强:

%PATH:

str1=str2%

~10,5%

~-10%

~0,-2%

这机种语法有什么用处呢?

现在我们来一个个讲解他们!

SET/Aexpression 

/A命令行开关指定等号右边的字符串为被评估的数字表达式。

该表达式

评估器很简单并以递减的优先权顺序支持下列操作:

() 

-分组

!

~- 

-一元运算符

*/% 

-算数运算符

+- 

-算数运算符

<

>

-逻辑移位

&

-按位“与”

-按位“异”

-按位“或”

=*=/=%=+=-= 

-赋值

=^=|=<

=>

=

, 

-表达式分隔符

上面这些是系统帮助里的内容,来简单解释一下:

set的/A参数就是让SET可以支持数学符号进行加减等一些数学运算!

现在开始举例子介绍这些数学符号的用法:

看例子这里的例子请直接在CMD下拷贝命令运行,不需要保存为BAT!

set/avar=1+1 

set/a语法,var变量名1+1数学式子

拷贝运行后会直接显示一个2,或者运行完后我们输入echo%var%,也是二,这就是一个简单的加法运算!

set/avar=2-1 

结果是多少呢?

如果你看不到结果就echo%var%.....

set/avar=2*2乘法运算

set/avar=2/2除法运算

set/avar=(1+1)+(1+1)结果等于4看得懂吧!

set/aa=1+1,b=2+1,c=3+1 

运行后会显示一个4,但我们用echo%a%%b%%c%后看结果,会发现其他数学运算也有效果!

,这就是逗号的作用!

有时候我们需要直接在原变量进行加减操作就可以用这种语法

set/avar+=1 

这样的语法对应原始语法就是set/avar=%var%+1都是一样的结果,在原变量的值上在进行数学运算,不过这样写简单一点。

另外还有一些用逻辑或取余操作符,这些符号,按照上面的使用方法会报错的。

比如我们在CMD里输入set/avar=1&

1"

与运算"

,他并不会显示为1,而是报错,

为什么?

对于这样的"

逻辑或取余操作符"

,我们需要把他们用双引号引起来,看例子

set/avar=1"

1这样结果就显示出来了,其他逻辑或取余操作符用法

+"

1异运算

%"

取模运算

set/avar=2"

2次方运算

这些符号也可以用&

=这样的简单用法如

set/avar"

="

1等于set/avar=%var%"

1注意引号

好符号说到这,现在说%PATH:

这个是替换变量值的内容,看例子

seta=

echo替换前的值:

%a%"

setvar=%a:

=%

echo替换后的值:

%var%"

对比一下,我们发现他把变量%a%的空格给替换掉了,从这个例子,我们就可以发现%PATH:

str1=str2%这个操作就是把变量%PATH%的里的str1全部用str2替换

比如我们把上面的例子改成这样

seta=

.=伤脑筋%

解释setvar=%a:

set命令var变量名字a是要进行字符替换的变量的值,"

."

为要替换的值,

伤脑筋"

为替换后的值!

执行后就会把变量%a%里面的"

全部替换为"

这就是set的替换字符的很好的功能!

先讲到这

~10,5% 

这个什么意思,看例子:

其他两种语法

他们也是显示指定变量指定几位的值得的意思

~-10%例子

~-3%

这个就是把变量a倒数3位的值给变量VAR

当然我们也可以改成这样

~3%

这个就是把变量a的前3位的值给变量VAR

~0,-2% 

例子

~0,-3%

执行后,我们发现显示的是"

bbs.verybat"

,少了"

.cn"

从结果分析,很容易分析出,这是把变量a的值从0位开始,

显示变量a总位数-3的位的值得(我们给变量a的的值bbs.verybat有11位,11-3=8),这样他就

只显示从第0位开始到第8位的值,并赋予给变量var

如果改成这样

~2,-3%

那么他就是显示从第2位开始到第8位的值,并赋予给变量var

二、常用特殊符号

1、@命令行回显屏蔽符

2、%批处理变量引导符

3、>

重定向符

4、>

5、<

、>

、<

6、|命令管道符

7、^转义字符

8、&

组合命令

9、&

10、||组合命令

11、"

字符串界定符

12、,逗号

13、;

分号

14、()括号

15、!

感叹号

16、批处理中可能会见到的其它特殊标记符:

CR(0D)命令行结束符

Escape(1B)ANSI转义字符引导符

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

Tab(09);

=不常用的参数界定符

+COPY命令文件连接符

*?

文件通配符

/参数开关引导符

:

批处理标签引导符

1、@命令行回显屏蔽符

这个字符在批处理中的意思是关闭当前行的回显。

我们从前几课知道

ECHOOFF可以关闭掉整个批处理命令的回显,但不能关掉ECHOOFF这个命令,现在我们在ECHOOFF这个命令前加个@,就可以达到所有命令均不回显的要求

2、%批处理变量引导符

这个百分号严格来说是算不上命令的,它只是批处理中的参数而已(多个%一起使用的情况除外,以后还将详细介绍)。

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

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

%0批处理文件本身,包括完整的路径和扩展名

%1第一个参数

%9第九个参数

%*从第一个参数开始的所有参数

参数%0具有特殊的功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等。

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

copy%0d:

\wind.bat

小技巧:

添加行内注释

%注释内容%(可以用作行内注释,不能出现重定向符号和管道符号)

为什么这样呢?

此时“注释内容”其实被当作变量,其值是空的,故只起注释作用,不过这种用法容易出现语法错误,一般不用。

3、>

输出重定向命令

这个字符的意思是传递并且覆盖,他所起的作用是将运行的结果传递到后面的范围(后边可以是文件,也可以是默认的系统控制台)

在NT系列命令行中,重定向的作用范围由整个命令行转变为单个命令语句,受到了命令分隔符&

,&

,||和语句块的制约限制。

比如:

使用命令:

echohello>

1.txt将建立文件1.txt,内容为”hello“(注意行尾有一空格)

echohello>

1.txt将建立文件1.txt,内容为”hello“(注意行尾没有空格)

4、>

这个符号的作用和>

有点类似,但他们的区别是>

是传递并在文件的末尾追加,而>

是覆盖

用法同上

同样拿1.txt做例子

1.txt

echoworld>

1.txt

这时候1.txt内容如下:

hello

world

5、<

这三个命令也是管道命令,但它们一般不常用,你只需要知道一下就ok了,当然如果想仔细研究的话,可以自己查一下资料。

(本人已查过,网上也查不到相关资料)

,输入重定向命令,从文件中读入命令输入,而不是从键盘中读入。

echo2005-05-01>

temp.txt

date<

deltemp.txt

这样就可以不等待输入直接修改当前日期

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

,刚好和>

相反,从一个句柄读取输入并将其写入到另一个句柄输出中。

常用句柄:

0、1、2,未定义句柄:

3—9

1>

nul表示禁止输出正确的信息

2>

nul表示禁止输出错误信息。

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

句柄0:

标准输入stdin,键盘输入

句柄1:

标准输出stdout,输出到命令提示符窗口(console,代码为CON)

句柄2:

标准错误stderr,输出到命令提示符窗口(console,代码为CON)

其中的stdin可被<

重定向,stdout可被>

重定向。

我们已经知道读取文本中的内容可以用for命令,但如果只需要读取第一行用for命令就有点麻烦。

简单的办法如下:

set/pstr=<

%0

echo%str%

运行显示批处理文件自身的第一行:

6、|命令管道符

第一条命令|第二条命令[|第三条命令...]

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

\|find"

txt"

以上命令是:

查找C:

\所有,并发现TXT字符串。

FIND的功能请用FIND/?

自行查看

7、^转义字符

^是对特殊符号<

,>

的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊意义。

比如

echotest^>

结果则是:

test>

他没有追加在1.txt里,呵呵。

只是显示了出来

另外,此转义字符还可以用作续行符号。

举个简单的例子:

echo英雄^

是^

好^

男人

为什么转义字符放在行尾可以起到续行符的作用呢?

原因很简单,因为每行末尾还有一个看不见的符号,即回车符,转义字符位于行尾时就让回车符失效了,从而起到了续行的作用。

8、&

语法:

第一条命令&

第二条命令[&

第三条命令...]

、&

、||为组合命令,顾名思义,就是可以把多个命令组合起来当一个命令来执行。

这在批处理脚本里是允许的,而且用的非常广泛。

因为批处理认行不认命令数目。

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

这里&

两边的命令是顺序执行的,从前往后执行。

dirz:

\&

diry:

dirc:

\

以上命令会连续显示z,y,c盘的内容,不理会该盘是否存在

9、&

用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令

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

10、||组合命令

第一条命令||第二条命令[||第三条命令...]

用这种方法可以同时执行多条命令,当一条命令失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令;

提示:

组合命令和重定向命令一起使用必须注意优先级

管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令

问题:

把C盘和D盘的文件和文件夹列出到a.txt文件中。

看例:

dird:

\>

a.txt

这样执行后a.txt里只有D盘的信息!

因为组合命令的优先级没有重定向命令的优先级高!

所以这句在执行时将本行分成这两部分:

\和dird:

a.txt,而并不是如你想的这两部分:

\和>

a.txt。

要使用组合命令&

达到题目的要求,必须得这么写:

a.txt&

这样,依据优先级高低,DOS将把这句话分成以下两部分:

a.txt和dird:

例十八中的几句的差别比较特殊,值得好好研究体会一下。

当然这里还可以利用&

命令:

[这个也可以用dirc:

\;

d:

a.txt来实现]

11、"

双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法

cd"

programfiles"

cdprogra~1

cdpro*

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

12、

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2