这种方法同样适合于批处理文件的暂停命令PAUSE,可屏蔽PAUSE命令的显示信息“Press any key to continue”。例如:
@ECHO OFF
ECHO There is no disk in drive A,Insert a
ECHO disk and press Enter.
PAUSE>NUL
批命令中的子程序
大多数成熟的高级编程语言允许您把常用的例程建立成独立的模块即子程序,它保
留了代码的独立性,使程序模式化,便于组织.至少可以说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%
DEBUG
-A
-166C:0100 MOV DX,111
-166C:0103 MOV AH,09
-166C:0105 INT 21
-166C:0107 MOV AH,01
-166C:0109 INT 21
-166C:010B MOV AH,4C
-166C:010D INT 21
-166C:010F INT 20
-166C:0111 DB '******************************'0D 0A
-166C:0131 DB '* 1.Turbo Pascal 5.00 *'0D 0A
-166C:0151 DB '* 2.Turbo Basci 1.00 *'0D 0A
-166C:0171 DB '* 3.Turbo Prolog 2.00 *'0D 0A
-166C:0191 DB '* 4.Turbo C 2.00 *'0D 0A
-166C:01B1 DB '* 0.Exit *'0D 0A
-166C:01B1 DB '******************************'0D 0A
-166C:01F1 DB 'Your choice(0..4) : '24 0D 0A 1A
-166C:0209
-R CX
CX 0000
:108
-N MENU.COM
-W
Writing 0108 bytes
-Q
@ECHO OFF:
START
CLS
MENU
IF ERRORLEVEL 52 GOTO C
IF ERRORLEVEL 51 GOTO PRO
IF ERRORLEVEL 50 GOTO BAS
IF ERRORLEVEL 49 GOTO PAS
IF ERRORLEVEL 48 GOTO EX
CLS
GOTO START AS
CD \TP5.00
TURBO
CD \
GOTO START
:BAS
CD \TB
TB
CD \
GOTO START RO
CD \TPROLOG
PROLOG
CD \
GOTO START
:C
CD \TURBOC
TC
CD \
GOTO START
:EX
@ECHO ON
MAKEOBJ.BAT C.BAT
@ECHO OFF
ECHO COMPILE FORTRAN PROGRAMS.
FOR %%A IN (*.FOR) DO COMMAND /C C %%A
ECHO FINISH !
@ECHO ON @ECHO OFF
ECHO ------ COMPILE %1 ------
FOR1 %1; >NUL
FOR2 >NUL
@ECHO ON
正确熟练地应用批处理文件, 可以给你的工作带来事半功倍的效果。利用本文介绍的方法你可以方便地编写出一个应用系统的主控模块, 与高级编写的模块一样好用, 且更为简便。以上的程序均在PC/AT上通过, 操作系统为PC DOS3.30。 作者: mys 时间: 2003-3-8 00:00 很好,写得很详细。可以说是精品。作者: 闪猛 时间: 2003-3-8 00:00 非常感谢,正需要这方面的知识。作者: odusseus 时间: 2003-3-9 00:00 很老了。不过确实不错。作者: chenall 时间: 2003-3-9 00:00 好顶顶顶顶。作者: liangjianan 时间: 2003-3-13 00:00 感谢tanglu_sd的讲解,但我还有些要请教:
在Win98启动盘中的Autoexec.bat里有这么两句:
set LglDrv=27 * 26 Z 25 Y 24 X 23 W 22 V 21 U 20 T 19 S 18 R 17 Q 16 P 15
set LglDrv=%LglDrv% O 14 N 13 M 12 L 11 K 10 J 9 I 8 H 7 G 6 F 5 E 4 D 3 C
不知何解
又:如何像98启动盘那样自动将光驱的盘符紧跟在硬盘盘符之后?作者: lkkl 时间: 2003-3-20 00:00 精品!!!作者: liuguang2008 时间: 2003-3-21 00:00 很有学习的价值,向你好好学习。作者: HR130 时间: 2003-3-31 00:00 GOOD作者: bgn 时间: 2003-4-2 00:00 很好很好,我很高兴。Thankyou!作者: zjktxwd 时间: 2003-4-9 00:00 好棒,谢谢!作者: luxia 时间: 2003-4-11 00:00 好作者: 13670767243 时间: 2005-1-8 00:00 精品!!!
好棒,谢谢! 作者: 13670767243 时间: 2005-1-9 00:00 set LglDrv=27 * 26 Z 25 Y 24 X 23 W 22 V 21 U 20 T 19 S 18 R 17 Q 16 P 15
set LglDrv=%LglDrv% O 14 N 13 M 12 L 11 K 10 J 9 I 8 H 7 G 6 F 5 E 4 D 3 C
上面的意思就是把等于号"="后面的所有字符赋给变量%LglDrv%.
作者: xlxlds 时间: 2005-1-9 00:00 不错 真有这方面的需要。!还有谁可以读懂下面=后的代码啊,知道的话,能说说这么看懂得?set LglDrv=27 * 26 Z 25 Y 24 X 23 W 22 V 21 U 20 T 19 S 18 R 17 Q 16 P 15
set LglDrv=%LglDrv% O 14 N 13 M 12 L 11 K 10 J 9 I 8 H 7 G 6 F 5 E 4 D 3 C