DOS下硬件设备的使用与设置
由于电脑的普及和应用的日益深入,为了满足人们的需要,电脑的功能随着它的发展变得越来越强大,硬件设备也越来越多,如从原来的ISA及PCI声卡、调制解调器等到现在的USB硬盘、鼠标等,而且品牌多种多样。那么,我们应该如何在DOS下使用与设置这些设备呢?
其实有很多硬件设备在DOS下不需安装任何的驱动程序,只要硬件或将BIOS设置好就可使用,如键盘,普通的硬盘和支持PCL(打印机控制语言)的打印机等。在DOS下使用支持PCL的打印机非常容易,因为打印机连接在并行端口(LPT)上,所以通常LPT1或PRN就是打印机端口。比如COPY C:\CONFIG.SYS LPT1命令(当然也可直接使用PRINT C:\CONFIG.SYS命令)就可将C:\CONFIG.SYS文件中的内容用打印机打印出来。大家看,是不是很方便呢?当然,要在一些DOS应用程序中打印出更好的效果(如各种字体,图像等),还需要专门的打印机驱动程序,在这些应用程序中的“打印机设置”中选择合适的打印机即可。
和打印机类似的是调制解调器。调制解调器是电脑拨号上网时的必用设备,分为内置和外置两大类。外置调制解调器通常接在电脑的串行端口(通信端口COM)上,如COM2。传统的内置调制解调器通常也可以自动虚拟串行端口,所以和外置调制解调器的使用相差不大。DOS下有大量与调制解调器有关的通信程序,如果调制解调器接在COM3上,使用这些程序时使用COM3就行了。如果您想在DOS下用简单的命令测试一下调制解调器,可用ECHO ATDT12345>COM3(假设调制解调器连在COM3上),这时它就会拨号(12345),使用也非常方便。然而,随着硬件的发展,许多非传统的新型调制解调器出现了。这些新型调制解调器没有硬件控制器,需要用软件虚拟,所以叫软件调制解调器,或叫WinModem。原来ISA接口的调制解调器大多是传统的硬件调制解调器,而PCI接口的调制解调器则有许多是软件调制解调器。软件调制解调器和硬件调制解调器相比,由于没有硬件控制器,所以成本要低些,但是性能自然要差些,而且需要驱动程序才可运行。所以,在DOS下必须装载相应的驱动程序才可使用。但由于这些调制解调器主要是为Win9x设计的,所以大多都没有DOS下驱动程序,所以无法在纯DOS下使用,不过有很多调制解调器通过虚拟可在Win9x的DOS窗口下使用。
再谈谈大家经常使用的鼠标与光驱。由于鼠标和光驱较早就广泛使用了,所以DOS自带它们的驱动程序或扩展程序,如MOUSE和MSCDEX,不过MSCDEX还需要光驱的自带驱动程序。然而,随着DOS的发展,这些程序已越来越不实用了,现已有很好的替代程序,如最新最好的鼠标驱动程序Cute Mouse(CTMOUSE)。CTMOUSE是一个仍在开发中的非常实用的鼠标驱动程序,和DOS自带的或其它鼠标驱动程序相比,它具有无可比拟的优点,如速度非常快,占用内存非常小(才3.3K),通用性非常强,以及有多种语言显示(暂无中文,不过如果大家喜欢的话我可以去汉化)等优点,因此我强烈推荐大家使用,可在“DOS软件”中下载。DOS下通用的光驱程序也有很多,如Win98自带的DOS启动盘中OAKCDROM等。但最好的是“驱动程序”中的PTSATAPI.SYS或VIDE-CDD.SYS,因为它具有速度快,占用内存小(分别才占用2K和5K,而OAKCDROM需占30多K,其它的则占得更多),通用性非常强(可驱动各种品牌非USB的CD-ROM/CD-R/CD-RW/DVD-ROM/DVD-R/DVD-RW,我所试的光驱用它无一驱动失败)。具体的安装方法是在CONFIG.SYS中先用DEVICE(HIGH)命令加载此光驱驱动程序,然后再在AUTOEXEC.BAT中加载光驱扩展程序MSCDEX.EXE,如:LH MSCDEX /D:CDROM1 /S /K。不过,如果您希望让系统自动安装设置光驱而不想手工配置的话,可运行VIDE-CDD.SYS中自带的全屏幕安装程序,这样就会觉得安装起来十分轻松了。为了节省内存,还可以将CLOAKING与MSCDEX合用,这样可极大的减少MSCDEX的内存占用,大家可见本栏目中的“DOS下内存的配置”及“CONFIG.SYS文件的命令与配置”以获得具体配置情况。至于USB的鼠标与光驱,请见下文。
现在电脑已进入了多媒体时代,故声音和图像都是不可缺少的,因此,声卡显得十分重要。那么,在DOS下如何使用声卡呢?在DOS下使用声卡最重要的一点是需将BLASTER环境变量设置成正确的值,比如SET BLASTER=A220 I7 D1 H6 P330 T6等,其中A表示硬件地址,I表示中断号,D表示低端DMA,H表示高端DMA,P表示MPU401的地址,T表示声卡类型。A通常为220,I则主要有5和7两种可能,P经常是330,T则对应着您的声卡的类型(T1表示SB 1.0,T2表示SB 1.5,T3表示SB 2.0,T4表示低版本的SB Pro及其兼容,如ESS688等,T5表示高版本的SB Pro,T6表示SB 16及其兼容,如SB AWE及SB PCI等)。对于ISA声卡,通常使用自动设置的值即可,比如ESS688声卡的默认值是A220 I5 D1 T4,也可以使用自带的设置程序如ESSCFG重新设置;对于PCI声卡,有的可以使用SB-Link技术,其它的大多可以使用自带的驱动程序虚拟ISA声卡以使用,如SB PCI,SB Audigy,SB Live!,C-Media 8738,SiS 7018等PCI声卡的驱动程序可在“驱动程序”中下载,Yamaha及Aopen等声卡也可使用其自带的驱动程序以实现在纯DOS下使用PCI声卡,或者在Windows的DOS窗口中使用。要想设置PCI声卡的设置参数,可以使用自带的设置程序,如SB Live!声卡的驱动程序中就有SBECFG命令,或者编辑它的配置文件,如SB PCI的驱动程序中的SBPCI.INI文件。
接下来就是网卡和显卡了。网卡的情况比较特殊,各网络环境需要各自的网卡驱动程序。对于ISA网卡,由于绝大多数是NE2000兼容,所以可以使用NE2000网卡的驱动程序,可在“DOS软件”中下载。网卡自带的磁盘中多有很多文件夹,分别是各网络环境的单独驱动程序,如MSCLIENT或NDIS2文件夹上是用于Microsoft Network Client(MSCLIENT)及LAN Manager的网卡驱动程序,NWCLIENT或DOSODI文件夹上则是用于Netware的网卡驱动程序。以Netware Lite为例,要启动IPX/SPX协议,需首先加载LSL.COM,然后是网卡的ODI驱动程序,如SIS900网卡的是SIS900.COM,加载完后再运行IPXODI.COM即可。而对于MSCLIENT,SIS900网卡的驱动程序是SIS900.DOS,网络启动时会自动加载。当然,网卡还是有个标准的用于DOS下上Internet的驱动程序,那就是网卡的Packet驱动程序。其具体的使用方法,可见本栏目中的“DOS下联网的方法”。对于显卡,不像Windows,DOS下不需要专门的驱动程序即可显示高彩色甚至真彩色的文字及图像,但有显示扩展驱动程序,如VESA 3.0显示驱动程序Scitech Display Doctor等,可在“DOS软件”中下载。
然后就是USB硬件设备的使用了。许多人认为DOS下无法使用USB设备,其实不然。新的BIOS中就有“USB for DOS”功能,还有不少的DOS下USB设备驱动程序,如DUSE,USB_CD等,可在“DOS软件”中下载。以DUSE为例,这是一个DOS下通用的USB存储设备的驱动程序,包括USB硬盘,光驱,软驱等,许多人利用它成功地驱动了自己的USB设备,如USB的CD-RW等;OHCI/UHCI则分别为OHCI/UHCI类型的USB鼠标驱动程序;USB_CD则是一个单独的USB光驱驱动程序;USB4DOS则提供DOS下使用各种USB设备(如USB打印机、USB数码相机等)的功能。不过我没有USB设备,所以还没有用过。欢迎大家使用它们,并将使用结果告诉我,谢谢!
近些年来还出现了不少新的硬件,DOS下也完全可以使用它们。以ATX电源为例,DOS下的一些软件就可以利用它来实现软关机,如ShutDown,PowerOff等命令,可在“DOS软件”中下载。DOS下用这些软件来实现软关机有很多好处,比如用在批处理文件中时可指定在运行完某程序后或在指定的时间自动关机,还可以实现网络中的“远程唤起”等功能,好处多多。由此可见DOS的强大功能了。如果大家喜欢DOS的话,不如来参加“DOS开发”栏目以开发出新的DOS软件,共同让DOS继续发展壮大吧!
--------------------------------------------------------------------------------
DOS系统的维护
一个系统只有进行好的维护,才能发挥出好的效果。那么,对于DOS系统,应当如何维护呢?
首先,要定期检查磁盘的错误。DOS下有许多命令可以用来检查磁盘,如CHKDSK,SCANDISK等。而一个更强大的磁盘工具则是Norton的Disk Doctor(磁盘医生),它有着友好的界面和强大的功能,可在本站的“磁盘工具”中下载。只有定期检查磁盘,才能保证磁盘使用的稳定性。
其次,要定期检查病毒。计算机病毒是一种能严重危害系统安全和数据完整的破坏性程序,如果任其发作,可能会造成严重的损失。所以,定期检查病毒是非常重要和必要的。要检查病毒,需要使用好的杀病毒软件,而且注意经常升级病毒库,否则起不到应有的效果。实用的DOS下杀毒软件有F-PROT,Norton AntiVirus,KV3000等,尤其是前面的F-PROT和NAV,皆由世界著名的大公司推出,而且正在不断地更新,所以效果非常好,可以在本站的“杀毒软件”中下载。然而,由于新的病毒是在不断地出现的,所以应定期下载这些杀毒软件的新的病毒库,以达到最好的较果。当然,光使用杀毒软件,却不注意防范,也是不行的。防毒通常比杀毒更有效,因为防毒可以大大减少病毒感染的可能性。防毒的方法有多种,如使用病毒防火墙程序,不要使用来历不明的软件等。通过这些方法,病毒通常无法侵入。
然后,要定期备份重要的数据。因为即使采用了前面的两种措施,也只能大大降低数据被破坏的可能性,而不是高枕无忧了。由于误操作或硬件故障等原因造成的数据丢失情况随时都可能发生。因此,备份数据就十分必要了。通常可将它们备份到软盘或其它硬盘中以防不测,以免到时后悔莫及。对于磁盘分区表和引导记录等,也应该备份下来,很多工具都可以做到,如SRC Tools、BFHF等等。尤其是SRC Tools,使用起来非常方便,可以在本站的“磁盘工具”中下载,本站的“DOS文章”栏目中还有它的详细使用方法介绍的文章。
当然,还需要进行一些其它维护,如定期整理磁盘碎片,删除垃圾文件,以及将文件和软件归类以方便使用等。
对于系统配置的维护也是非常重要的,也可以使用一些工具软件来进行自动维护,如用MEMMAKER等。这样可以有效地节省时间和精力
DOS下内存的配置
我们大家都知道,DOS大体上不能够完全依靠人机界面的方式来一步步地完成系统的配置。若要让系统发挥出最大的性能,必须依靠我们的进一步努力。下面介绍一下DOS内存的配置方法。
实模式的DOS通常只能使用1M以下的内存空间。其中基本内存为640K,而上位内存则需要相应的内存管理器。基本内存的管理尤为重要,因为使用不当会造成一些程序无法运行。那么,应如何优化使用它呢?这儿有一些建议。
首先,加载提供上位内存(UMB)的内存管理器。通常有EMM386和QEMM等,不过这些工具自身占用的内存较大,在此推荐的是UMBPCI,这是一个仍在发展的工具,可提供最大高达162K的UMB,而且如果放在HIMEM前可完全不占用基本内存。然后,将所有的设备驱动程序/TSR调入UMB(用DEVICEHIGH,LOADHIGH等),这样,即使加载许多驱动程序(如光驱,鼠标等),剩下的基本内存仍会很高,甚至630K。要注意的是,尽量使用占内存较少的驱动程序,以便空出最多的UMB。
以下是在我的电脑上(MS-DOS 7.10)用MEM/A/C命令显示出的内存状态信息:
Modules using memory below 1 MB:
Name Total Conventional Upper Memory
-------- ---------------- ---------------- ----------------
SYSTEM 32,736 (32K) 9,664 (9K) 23,072 (23K)
HIMEM 1,168 (1K) 0 (0K) 1,168 (1K)
SETVER 864 (1K) 0 (0K) 864 (1K)
VIDE-CDD 5,024 (5K) 0 (0K) 5,024 (5K)
CLOAKING 1,168 (1K) 0 (0K) 1,168 (1K)
IFSHLP 2,864 (3K) 0 (0K) 2,864 (3K)
COMMAND 7,424 (7K) 0 (0K) 7,424 (7K)
KILLER 400 (0K) 0 (0K) 400 (0K)
WATCH 3,392 (3K) 0 (0K) 3,392 (3K)
MSCDEX 2,816 (3K) 0 (0K) 2,816 (3K)
DOSKEY 5,744 (6K) 0 (0K) 5,744 (6K)
CTMOUSE 3,344 (3K) 0 (0K) 3,344 (3K)
ZENO 1,376 (1K) 0 (0K) 1,376 (1K)
ESCAPE 496 (0K) 0 (0K) 496 (0K)
Free 750,080 (732K) 645,328 (630K) 104,752 (102K)
Memory Summary:
Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 655,360 10,032 645,328
Upper 163,904 59,152 104,752
Reserved 393,216 393,216 0
Extended (XMS) 49,119,168 82,880 49,036,288
---------------- ----------- ----------- -----------
Total memory 50,331,648 545,280 49,786,368
Total under 1 MB 819,264 69,184 750,080
Largest executable program size 645,312 (630K)
Largest free upper memory block 103,952 (102K)
Available space in High Memory Area 5,360 (5K)
MS-DOS is resident in the high memory area.
从上表中可以看出,我加载了以下内存驻留程序及驱动程序:
HIMEM:DOS中自带的XMS驱动程序。
SETVER:DOS版本表程序。
VIDE-CDD:通用光驱驱动程序。如果您的光驱是USB的,则用DUSE。
CLOAKING:内存CLOAKING API及DPMS驱动程序,以节省MSCDEX的内存占用。
IFSHLP:32位的磁盘服务程序,用于Windows 9x中,可以不加载。
COMMAND:DOS命令处理器。
KILLER:自动截获不正确的指令,防止死机。
WATCH:TSR Utils中的一个,DISABLE命令利用它可以禁止其它TSR程序的功能。
MSCDEX:和CLOAKING程序合用的MSCDEX,只占不到3K内存,否则要占约30K。
DOSKEY:DOS自带的键盘缓冲和历史程序。
CTMOUSE:DOS下通用的鼠标驱动程序,占内存小,速度也非常快。
ZENO:显示加速程序。
ESCAPE:在任何时候都可以按F12键退回到DOS方式下,以防止死机。
当然,我还加载了不少非内存驻留程序。如果您想知道我的CONFIG.SYS文件中的具体设置内容,可看下面的“CONFIG.SYS文件的命令与配
CONFIG.SYS文件的命令与配置
CONFIG.SYS是DOS系统中的一个重要文件,它的配置直接影响到系统的使用及其效率。如果配置不当的话,可能很多程序都无法正常运行。因此,正确合理地配置CONFIG.SYS文件是十分必要和重要的。下面我向大家介绍一下CONFIG.SYS中的命令及其配置方法。
CONFIG.SYS中的命令:注意:所有以HIGH结尾的命令(如DEVICEHIGH)表示将其调入UMB(上位内存),但有些这样的命令(如FILESHIGH)必须在MS-DOS 7.x版本中使用。
ACCDATE:指定对每一个驱动器是否记录文件最后被访问的日期。
用法:ACCDATE= 驱动器 1+|- [ 驱动器 2+|-]...
如:ACCDATE=C+ D+ E+将在C,D,E盘中记录文件最后被访问的日期。
此命令仅用于MS-DOS 7.x中。
BREAK:设置或清除扩展的CTRL+C检查。
用法:BREAK=ON|OFF
BUFFERS/BUFFERSHIGH:为指定数量的磁盘缓冲区分配内存。
用法:BUFFERS=磁盘缓冲区数量,[从属高速缓存中的缓冲区数量]
DEVICE/DEVICEHIGH:将指定的设备驱动程序装入内存。
用法:DEVICE/DEVICEHIGH 文件名 [参数]
其中,文件名是文件的完整路径,如C:\DOS\HIMEM.SYS。
DOS:用于DOS系统的配置,如是否使用HMA(高端内存区)等。
用法:DOS=[HIGH|LOW][,UMB|,NOUMB][,AUTO|,NOAUTO][,SINGLE]
其中,HIGH和LOW表示使用HMA或不使用HMA,UMB和NOUMB表示使用UMB或不使用UMB,AUTO或NOAUTO表示系统自动配置或不自动配置,SINGLE表示使用单一模式的DOS。其中,AUTO/NOAUTO和SINGLE仅用于MS-DOS 7.x中。
DRIVPARM:设置现有物理设备的参数。
注:此命令用得很少,我也没用过,所以暂时跳过。
FCBS/FCBSHIGH:指定可以同时打开的文件控制块 (FCB) 的数量。
用法:FCBS/FCBSHIGH=可以同时打开的FCB的数量。
注:由于FCB主要是在DOS 1.x中使用,对于高版本,所以可以让系统自动配置。
FILES/FILESHIGH:指定 可以同时访问的文件数量。
用法:FILES/FILESHIGH=可以同时访问的文件数量。
注:一般FILES/FILESHIGH的设置值在30左右比较合适。
INSTALL/INSTALLHIGH:用于加载TSR(内存驻留程序)。
用法:INSTALL/INSTALLHIGH=文件名 [参数]
如:INSTALLHIGH=C:\DOS\DOSKEY.COM /APPEDIT
LASTDRIVE/LASTDRIVEHIGH:指定可以访问的驱动器的最后有效的驱动器字母。
用法:LASTDRIVE=驱动器字母
如LASTDRIVE=F会将F设置成最后有效的驱动器字母。
NUMLOCK:指定启动时NUMLOCK指定灯是否打开。
用法:NUMLOCK=ON|OFF
REM:添加注解。
用法:REM [注解字符串]
注:注解中的字符串只是用来增加可读性,将不被执行。
SET:设计DOS环境变量。
用法:SET 变量=[变量值]
SHELL:指定DOS 使用的命令解释程序的名称和位置。
用法:SHELL=文件名 [参数]
注:文件名默认是COMMAND.COM,您也可以指定其它的文件,如4DOS.EXE等。
STACK/STACKHIGH:指定使用的堆栈数量。
用法:STACK/STACKHIGH=堆栈数量,每个堆栈的大小
注:通常指定的值是9,256,这个值可以满足大多数的需求。
SWITCHES:指定一些特殊选项。
用法:SWITCHES=[/W] [/F] [/K] [/N] [/E[:n]]
其它的是一些菜单配置命令,如MENUITEM,MENUCOLOR等。
在MS-DOS 7.x中还有一些未公开命令,如LOGO,COMMENT等。
知道了以上的命令后,就要谈谈如何利用这些命令来配置CONFIG.SYS文件了。配置的好坏对系统的影响是非常大的。以下是我的电脑(都是MS-DOS 7.10)中CONFIG.SYS文件中的内容,大家可以用作参考。
电脑一,使用EMM386.EXE:
device=d:\dos\echo.sys L/o/a/d/i/n/g CONFIG.SYS...
device=d:\dos\himem.sys
device=d:\dos\emm386.exe noems novcpi i=b600-b7ff
devicehigh=d:\dos\mdctools\setver.exe
devicehigh=d:\dos\ifshlp.sys
devicehigh=d:\dos\vide-cdd.sys /d:IDE-CD
devicehigh=d:\dos\cloaking.exe
country=086,936,d:\dos\country.sys
shell=c:\command.com /p /e:640
set temp=e:\temp
set tmp=e:\temp
accdate=c+ d+ e+
dos=high,umb,auto
numlock=off
files=30
buffershigh=30,0
fcbshigh=4,0
lastdrivehigh=n
stackshigh=9,256
电脑二,使用UMBPCI.SYS:
device=d:\dos\echo.sys L/o/a/d/i/n/g CONFIG.SYS...
device=d:\dos\echo.sys
device=d:\dos\umbpci.sys
device=d:\dos\hiram.exe
devicehigh=d:\dos\himem.sys
devicehigh=d:\dos\setver.exe
devicehigh=d:\dos\ifshlp.sys
devicehigh=d:\dos\vide-cdd.sys /d:IDE-CD
shell=d:\dos\command.com /p /e:640
set temp=e:\temp
set tmp=e:\temp
accdate=c+ d+ e+
dos=high,umb,auto
country=086
numlock=off
fileshigh=30
buffershigh=30,0
stackshigh=9,256
lastdrivehigh=n
您不妨试试,相信您也会做出好的CONFIG.SYS文件来。
--------------------------------------------------------------------------------
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:添加注解。用于增加文件可读性,将不被执行。也可以用::来代替。
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软件分类下载”中的“脚本工具”中下载。在批处理文件中使用以上的工具可以实现非常强大的功能,甚至可以完成许多高级语言程序的功能。所以,如果您想编者按写批处理文件的话,它们是您不错的选择,不仅有详细的文档,而且还在不断发展中。
下面就要谈批处理文件的制作了。其实制作批处理文件并不难,只要掌握了方法就行了。随着您操作次数的增多,您会觉得越来越容易的。
首先使用一个文本编辑器,如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是键盘缓冲工具。
总之,利用批处理命令和批处理增强工具,我们可以编出许多强大的批处理文件来,大家不妨一试。许多批处理工具可以在“脚本工具”中下载。
--------------------------------------------------------------------------------
DOS未公开命令与参数
DOS系统中有许多未公开的命令与参数。我经过收集整理,发现了很多。由于DOS的有好几种,所以下面仅以MS-DOS为例,介绍一下常用命令中的未公开的命令与参数。经过比较,我发现在MS-DOS的各版本中,7.x版中的未公开命令与参数是最多的,这些7.x版本中的未公开命令与参数在其它DOS版本中通常是没有的,但却是非常实用的,例如COMMAND /Z命令,这是用DOS自带的命令显示ERRORLEVEL(错误返回代码)值的唯一方法(当然,用其它的附加工具,如ERR2ENV等也可以做到)。
DOS未公开命令:
TRUENAME:用于显示实际的路径,对SUBST等命令很有用。
INSTALLHIGH:用在CONFIG.SYS中,将文件调入UMB。
LOGO和COMMENT:仅用在MS-DOS 7.x中的CONFIG.SYS中,用法未知。
DOS未公开参数:
COMMAND /F 使Fail作为Abort,Retry,Fail中的默认选项。
COMMAND /D 在DOS5中是禁止AUTOEXEC.BAT自动执行;在6.0+版本中是禁止/F参数。
COMMAND /Z 显示ERRORLEVEL(错误返回代码)信息。
COMMAND /T 在MS-DOS 7.x中强制将COMMAND.COM永久性调入常规内存。
FORMAT /AUTOTEST 自动完成格式化过程。
FORMAT /BACKUP 自动完成格式化过程,并提示输入卷标。
FORMAT /SELECT 只在磁盘上备份系统区数据,相当于MIRROR程序。
FORMAT /SELECT /U 将引导区和文件分配表用F6H填之。
FORMAT /Z:n 设置FAT32分区上的簇大小。
FDISK /MBR 重写硬盘主引导记录。
FDISK /CMBR drive 重写指定驱动器上的主引导记录。
FDISK /PRI:size 创建主分区。
FDISK /EXT:size 创建扩展分区。
FDISK /LOG:size 在扩展分区上创建逻辑驱动器。
FDISK /PRMT|/Q 提示行动/安静模式。
FDISK /PARTN 将分区表信息保存到PARTSAV.FIL中。
FDISK /ACTOK 用于MS-DOS 7.x中,跳过完整性测试。
FDISK /FPRMT 用于MS-DOS 7.x中,自动采用FAT32,并跳过提示信息。
DOSKEY /APPEDIT 使DOSKEY也应用于其它程序(如DEBUG等)中。
DOSKEY /COMMAND和/PERMANENT和/SCRSIZE和/XHISTORY 用法未知。
SCANDISK /CLIP 用于MS-DOS 7.x中,将长文件名剪为短文件名。
SCANDISK /NOLOST 用于MS-DOS 7.x中,不提示表面测试或丢失簇。
SCANDISK /NOUI和/TEXT 用于MS-DOS 7.x中,使用标准的DOS界面。
SCANDISK /MOUNT 相当于SCANDISK.INI中的Mount=Always。
SCANDISK /TIME 相当于SCANDISK.INI中的ScanTimeOut=On。
QBASIC /QHELP 进入DOS的全屏幕帮助系统,相当于执行HELP命令。
QBASIC /EDCOM 进入DOS的文件编辑器,相当于执行EDIT命令。
MEM /A或MEM /ALL 显示HMA信息。
VER /R 显示扩展的版本信息。
DIR /Z 用于MS-DOS 7.x中,表示不显示长文件名。
DEVICE=HIMEM.SYS /Q 当HIMEM.SYS加载时使用安静模式。
DEVICE=EMM386.EXE NOTR 不要检测Token Ring网络适配器。
DOS未公开用法:
IF EXIST XMSXXXX0 ... 此命令可以判断当前是否安装了XMS内存管理器(通常是HIMEM.SYS)。注意:是XMSXXXX0,而不是有些文章中提到的错误的XMMXXXX0.
IF EXIST EMMXXXX0 ... 此命令则用来判断当前是否安装了EMS内存管理器(通常是EMM386.EXE)。
:: 此符号可在批处理文件中代替REM注解命令,可以加快运行速度。
以上是MS-DOS中的未公开命令与参数,其中有些是非常实用的,大家不妨一试