批处理基础学习

发布 2021-05-02 05:20:28 阅读 3297

批处理文件或批处理程序是一个包含若干ms-dos命令的正文文件,扩展名为。bat。当在命令提示符下敲入批处理程序的名称时,ms-dos成组执行此批处理程序中的命令。

任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面ms-dos命令是专门在批处理程序中使用的。

常用命令 echo、@、call、pause、rem(小技巧:用:代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。

首先, @不是一个命令, 而是dos 批处理的一个特殊标记符, 仅用于屏蔽命令行回显。 下面是dos命令行或批处理中可能会见到的一些特殊标记符:

cr(0d) 命令行结束符

escape(1b) ansi转义字符引导符

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

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

copy命令文件连接符

文件通配符

" 字符串界定符。

| 命令管道符

> 文件重定向符

命令行回显屏蔽符

参数开关引导符

批处理标签引导符

批处理变量引导符。

其次: 确实可以起到rem的注释作用, 而且更简洁有效; 但有两点需要注意:

第一, 除了 ::之外, 任何以 :开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用 goto 所无法识别的标号, 即在 :

后紧跟一个非字母数字的一个特殊符号。

第二, 与rem 不同的是, :后的字符行在执行时不会回显, 无论是否用echo on打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比 ::更为适用; 另外, rem 可以用于 文件中。

echo 表示显示此命令后的字符

echo off 表示在此语句后所有运行的命令都不显示命令行本身

与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。

call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。

pause 运行此句会暂停批处理的执行并在屏幕上显示press any key to continue...的提示,等待用户按任意键后继续 rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。

此处的描述较为混乱, 不如直接引用个命令的命令行帮助更为条理。

echo 当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回显。在运行批处理程序时,ms-dos一般在屏幕上显示(回显)批处理程序中的命令。

使用echo命令可关闭此功能。语法 echo [on|off] 若要用echo命令显示一条命令,可用下述语法: echo [message] 参数 on|off 指定是否允许命令的回显。

若要显示当前的echo的设置,可使用不带参数的echo 命令。 message 指定让ms-dos在屏幕上显示的正文。

call 从一个批处理程序中调用另一个批处理程序,而不会引起第一个批处理的中止。语法 call [drive:][path]filename [batch-parameters] 参数 [drive:

][path]filename 指定要调用的批处理程序的名字及其存放处。文件名必须用。bat作扩展名。

batch-parameters 指定批处理程序所需的命令行信息。

pause 暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处理程序中使用该命令。

语法 pauserem 在批处理文件或中加入注解。也可用rem命令来屏蔽命令(在 中也可以用分号(;)代替rem命令,但在批处理文件中则不能替代)。语法 rem [string] 参数 string 指定要屏蔽的命令或要包含的注解。

例1:用edit编辑文件,输入下列内容后存盘为c:\执行该批处理文件后可实现:将根目录中所有文件写入 中,启动ucdos,进入wps等功能。

批处理文件的内容为。

命令注释:

echo off不显示后续命令行及当前命令行

dir c:\*将c盘文件列表写入

call c:\ucdos\ 调用ucdos

echo 你好显示"你好"

pause暂停,等待按键继续

rem 准备运行wps 注释:准备运行wps

cd ucdos进入ucdos目录

wps运行wps

批处理文件的参数批处理文件还可以像c语言的函数一样使用参数(相当于dos命令的命令行参数),这需要用到一个参数表示符“%”

[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。

例2:c:根目录下有一批处理文件名为内容为:

echo off format %1

如果执行c:\>f a: 那么在执行时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:

例3:c:根目录下一批处理文件名为内容为:

echo off type %1 type %2

那么运行c:\>t %1 : 表示 %2 : 表示 于是上面的命令将顺序地显示和文件的内容。

特殊命令 if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。

if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:

1、if [not] "参数" =字符串"

待执行的命令参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。

例:if "%1"==a" format a: if 的命令行帮助中关于此点的描述为:

if [not] string1==string2 command 在此有以下几点需要注意:

1. 包含字符串的双引号不是语法所必须的, 而只是习惯上使用的一种"防空"字符

2. string1 未必是参数, 它也可以是环境变量, 循环变量以及其他字符串常量或变量

3. command 不是语法所必须的, string2后跟一个空格就可以构成一个有效的命令行。

2、if [not] exist [路径\]文件名

待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句。

如: if exist c:\ type c:\

表示如果存在c:\文件,则显示它的内容。

也可以使用以下的用法:

if exist command device

是指dos系统中已加载的设备, 在win98下通常有: aux, prn, con, nul com1, com2, com3, com4 lpt1, lpt2, lpt3, lpt4 xmsxxxx0, emmxxxx0 a: b:

c: .clock$, config$, dblbuff$, ifs$hlp$

具体的内容会因硬软件环境的不同而略有差异, 使用这些设备名称时, 需要保证以下三点:

1. 该设备确实存在(由软件虚拟的设备除外)

2. 该设备驱动程序已加载(aux, prn等标准设备由系统缺省定义)

3. 该设备已准备好(主要是指a: b:

.com1...lpt1...

等) 可通过命令 mem/d | find "device" /i 来检阅你的系统中所加载的设备另外, 在dos系统中, 设备也被认为是一种特殊的文件, 而文件也可以称作字符设备; 因为设备(device)与文件都是使用句柄(handle)来管理的, 句柄就是名字, 类似于文件名, 只不过句柄不是应用于磁盘管理, 而是应用于内存管理而已, 所谓设备加载也即指在内存中为其分配可引用的句柄。

3、if errorlevel 《数字》

待执行的命令很多dos程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。

如。if errorlevel 2 goto x2

返回值从大到小的顺序排列不是必须的, 而只是执行命令为 goto 时的习惯用法, 当使用 set 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式: if errorlevel 1 set el=1 if errorlevel 2 set el=2 if errorlevel 3 set el=3 if errorlevel 4 set el=4 if errorlevel 5 set el=5 ..当然, 也可以使用以下循环来替代, 原理是一致的:

for %%e in (1 2 3 4 5 6 7 8...do if errorlevel %%e set el=%%e 更高效简洁的用法, 可以参考我写的另一篇关于获取 errorlevel 的文章出现此种现象的原因是, if errorlevel 比较返回码的判断条件并非等于, 而是大于等于。 由于 goto 的跳转特性, 由小到大排序会导致在较小的返回码处就跳出; 而由于 set命令的 "重复" 赋值特性, 由大到小排序会导致较小的返回码 "覆盖" 较大的返回码。

另外, 虽然 if errorlevel=《数字》 command 也是有效的命令行, 但也只是 解释命令行时将 = 作为命令行切分符而忽略掉罢了。

学习批处理

1 打开回显或关闭回显功能 格式 echo on off 如果想关闭 echo off 命令行自身的显示,则需要在该命令行前加上 2 输出提示信息 格式 echo 信息内容。3 输出空行,即相当于输入一个回车 格式 echo 例如 即是按了一次回车转到了命提示符处echo也是应用到了此内容。4 答复...

批处理学习

1分钟包学会愚人节整蛊制作批处理炸弹。第1页 什么是批处理炸弹?最近网上流传一个叫做 大哥别杀我 纷纷遭到网友模仿,虽然我们都知道 里出现的人大多都是群众演员,但还是会被 中各种逃跑状态逗得人仰马翻。面对即将到来的愚人节,很多小朋友也开始琢磨起自己的小算盘,怎么能够在愚人节当天给身边好朋友一个不太过...

Windows批处理程序学习

说明 本文档是平时工作的积累,正在完善和补充,这里基本采用80 20法则,大部分内容是工作中经常用到的,并且可以解决大部分的问题。由于里面夹杂各种参考资料以及自己对这些资料的理解,其间可能存在许多不全面的,甚至错误的地方。如果以后有需要,再补充外部程序命令部分。作者 garfield 发布日期 20...