出  处: 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]
  | 
 
 
 |