精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>○ DOS>>经验技巧>>DOS中高级批命令技巧

主题:DOS中高级批命令技巧
发信人: [email protected].()
整理人: smallhors(1999-04-30 17:04:47), 站内信件
出  处: cs3.xmu.edu.cn

人们学写批命令(BATCH),但很少有人能认识到DOS批命令语言的强大功能.表面上

看,这种语言太简单,与高级编程语言相差甚远,然而,看到下面两个例子后,相信您会改

变这种看法.

    1.批命令中的子程序

    大多数成熟的高级编程语言允许您把常用的例程建立成独立的模块即子程序,它保

留了代码的独立性,使程序模式化,便于组织.至少可以说DOS的批命令不完全支持子程

序,但在任何时候你都可以用GOTO命令调用子程序.

    通常,GOTO命令用的标号还可以接受存储在环境变量中的标号,如:

        SET LABELNAME=START

        GOTO%LABELNAME%

    通过在子程序的开始替换标号并在子程序结束的地方设置GOTO %RETURN%语句,你


可以在DOS的批命令中建立子程序.只要SET 一个环境变量RETURN,你可在批命令的任

意专访调用子程序.例如,你可以给标号赋值并在下一行调用该子程序,招生GOTO语句

跳至该子程序的开始处,程序结构如:

        REM This set the environment
        REM variable and calls the
        REM subroutine
        SET RETURN=HERE
        GOTO SUB
        HERE
        SUB
        REM
        Place subroutine statements
        REM below
        GOYO %RETURN%

    语句GOTO SUB传送到子程序SUB,在SUB中你可以执行任何语句.执行至

GOTO%RETURN%时,批命令返回控制到号HERE,因环境变量RETURN被复赋值为HERE,如果你

每次调用SUB都 用叭一的标号(如RETURN),则可多次多处调用SUB.

    2.获取键盘输入

    DOS 批命令的另一严重不足是缺乏直接从键盘读入的命令.这可以用DEBUG建立一

    个小小的衫程序来弥补,请用正文编辑器输入下面的文件 并命名为INDEY.SCR

        N INKEY
        E 0100 B4 08 CD 21 C3 01 01 60
        E 0108 01
        RCX
        009
        W
        Q

    使用命令DEBUG<NKEY.SCR即可建立文件INKEY.COM,它可返回按键的ASC II码.该

码可被 DOS的命令IF ERRORLENEL所测试.由于每个字符的ASC II码值均不相同,使用

INDEY甚至因以区分大小写字符.

下面析批命令用于测度在DOS 提示符下你键入的现存的任何目录名/若目录名不

存在.它提示你按"Y"建立或按"N"继续.

IF EXIST C:\%1\NUL GOTO EXISTS
:ASK
ECHO subdirectory does not exist
ECHO Create it(Y\N)?
INKDY
IF ERRORLENEL 78 IF NOT ERRORLEVEL
79 GOTO END
IF ERRORLEVEL 110 IF NOT ERRORLEVE
111 GOTO END
IF ERRORLEVEL 89 IF NOT ERRORLEVEL
50 GOTO CREATEIT
IF ERRORLEVEL 121 IF NOT ERRORLEVEL
122 GOTO CREATEIT
GOTO ASK
CREATEIT
MD C:\%1
GOTO END
:EXISTS
:EXISTS
ECHO Directory exists!
PAUSE

:END INKEY暂停批命令的执行,直到键 入一个ASC II码值 与设置的ERRORLEVEL

值相同,若按键N或n(ASC II码为78或110).前两条语句将转到批文件 的结尾处,值得

注意的是语句IF ERRORLEVEL X IF NOT ERRORLEVEL X+1是测试返回码x的高效手段.

如按键Y或y,后两条语句转向CREATEIT.如所有这些测试均不成功,则转身ASK ,再次提

示"(Y/N)?"

3.DOS下的时间提示

若你想在屏幕上任何专访用明快的前面色显示日期和时间,可将下面的文件 录入

并存在TIMER,BAT文件中.

@E CHO OFF
IF "%1"==""GOTO HELP
GOTO OK
:HELP
ECHO SYNTAX:TIMER A B C D
ECHO A=TEXT COLOR :30=BLACK 31=RED
32=GREEN 33=YELLOW
ECHO 34=BLUE 35=MAGENTA
36=CYAN 37=WHITE
ECHO B=BACKGROUND:40=BALCK 41=RED
42=GREEN 43=YELLOW
ECHO 44=BLUE 45=MAGENTA
46=CYAN 47=WHITE
ECHO C=R NUMBER
ECHO D=COLUMN NUMBER
GOTO EXIT
:OK
PROMPT $P$G$E[s$E[%1m$E[%2m$[E%3;%4H
$d $t $E[37m$E[40m $E[u
:EXIT

请将ANSI.SYS 装入CONFIG.SYS中,利用 A,B,C,D测试好参数后,再装 入

AUTOEXEC崐.BAT.在屏幕右上角显示蓝色背景白色文字 时间及是戎的语句是: GOTO OK
42=GREEN 43=YELLOW
ECHO 44=BLUE 45=MAGENTA
46=CYAN 47=WHITE
ECHO C=R NUMBER
ECHO D=COLUMN NUMBER
GOTO EXIT
:OK
PROMPT $P$G$E[s$E[%1m$E[%2m$[E%3;%4H
$d $t $E[37m$E[40m $E[u
:EXIT

请将ANSI.SYS 装入CONFIG.SYS中,利用 A,B,C,D测试好参数后,再装 入

AUTOEXEC崐.BAT.在屏幕右上角显示蓝色背景白色文字 时间及是戎的语句是:

CALL TIMER.BAT 37 44 1 50

4.使进入目录命令和改变驱动器命令合二为一

利用 DOSKEY 宏及批命令 可使 CD 命令用D;(D为有效的驱动力 器标识符)命?BR>
--

--
※ 来源:·古庙钟声 cs3.xmu.edu.cn·[FROM: 210.34.9.32]

[关闭][返回]