iec防爆:DOS启动盘之CONFIG.SYS配置详解

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 16:42:20

 

DOS启动盘之CONFIG.SYS配置详解

    首先要说的是,要进行DOS下的环境配置,基本上不可避免要使用到config.sys和AUTOEXEC.BAT这两个文件。Config.SYS文件是一个专业的系统启动配置文件,它主要用于加载内存管理程序、设置扩充内存及扩展内存、加载有关硬件驱动程序,设置有关环境变量等,为用户计算机的正常使用创造必要的用户环境(在DOS时代,精通Config.SYS文件往往是“专家”的标志)。(在Windows 95/98中,系统已经自带了内存管理、环境变量等设置功能,Config.sys文件的作用已经远远没有那么重要了,它仍在“服役”的原因主要是为了保持对老版本DOS应用程序的兼容)

  一些在config.sys中经常用到的配置项目如下:

  1、FILES=数字

  表示可同时打开的文件数,一般可选择20到50,需要注意的是,如果把FILES的值设得过大会占用过多的基本内存。系统缺省为FILES=8。

  2、BUFFERS=数字

  表示设置磁盘缓冲区的数目,通常设置为20-30左右。缺省值一般为15。磁盘缓冲区是一块内存区,用于存储从磁盘读入的数据或存储写到磁盘的数据。  

  3、DEVICE和DEVICEHIGH

  用于加载一些内存驻留程序,用于管理设备。比如内存管理程序和光驱驱动程序等。如:

  DEVICE=C:\DOS\HIMEM.SYS

  DEVICE=C:\DOS\EMM386.EXE RAM

  DEVICEHIGH=C:\CDROM\CDROM.SYS

  DEVICEHIGH与DEVICE的不同是前者将程序加载入高端内存。

  4、HIMEM.SYS和EMM386.EXE

  DOS只能直接使用640KB的内存,即基本内存,必须依靠其他内存管理程序来使用更多的内存,这两条命令就是最常用的内存管理程序。

  其中640KB到1MB之间的内存被称为高端内存,是系统保留使用的。1MB以上的内存成为扩展内存,HIMEM.SYS就是负责管理扩展内存并建立高端内存的,使DOS可以将自己装入其中。HMA是扩展内存的头64K内存(实际上比64K少16K,但是人们习惯上说是64K),80286以上的电脑要使用HMA,须将CPU的A20地址线打开,这个过程已经由HIMEM代劳。

语法:DEVICE=HIMEM.SYS (一般不带参数加载,如果你确认内存没有错误的话,也可以带上/TESTMEM:OFF来跳过内存检测)。

  因此为了使用更多的内存,配置文件中应有以下指令。

  DEVICE=C:\DOS\HIMEM.SYS

  DEVICE=C:\DOS\EMM386.EXE RAM

  需要注意的是:EMM386.EXE必须要求先安装HIMEM.SYS,因而必须确保安装HIMEM.SYS的配置命令在EMM386.EXE之前。

  5、DOS=HIGH,UMB

  一般情况下,需要CONFIG.SYS文件加入这条命令,这样会将DOS的系统文件移入高端内存,空出更多的基本内存给其他软件使用。需要注意的是,如果没有安装EMM386.EXE,UMB,那么这条指令将是无效的。

    6、FCBS
    FCBS命令用于设置DOS能够同时打开的文件控制块(FCB)个数。文件控制块是用于存储文件有
关信息的数据结构。命令格式为FCBS=n,n为DOS能打开的文件控制块数,范围1-255,缺省值4。当一个应用程序使用FCBS命令且试图打开多于n个FCBS时,DOS可能关闭以前打开的文件。由于现在许多DOS程序不使用文件控制块,所以为了节省空间可将FCBS设置为1。

    7、STACKS
    用于设置MS-DOS为硬件中断的处理而保留的RAM容量,大多数PC不需要这个额外的堆栈空间。语法为STACKS=N,S,其中N表示堆栈个数,合法取值为0及8-64之间的数值。S选择指出了每个堆栈的大小(字节),合法值为0及32-512之间的数值。
    使用STACKS=0,0可以阻止DOS分配中断堆栈,WINDOWS会自动为硬件中断选择一个堆栈,这样就可以节省3KB的RAM,留给应用程序。当DOS接收到一个硬件中断时,它就从CONFIG.SYS文件指定的数量中分配一个堆栈。若指定数量为0,DOS不分配堆栈,而将该任务留给当前正在运行的程序,因此,每个运行着的程序必须有足够的堆栈空间来存放机器的硬件中断驱动程序。如果改变STACKS设置后出现“INTERAL STACK OVERFLOW”(内部堆栈溢出)信息,就应恢复STACKS原来的设置。如果用户使用了EMM386.EXE程序,可能会得到“EXCEPTION ERROR 12”(异常错误12)信息,而不是“INTERAL STACK OVERFLOW”(内部堆栈溢出)信息。
    8、LASTDRIVE
    LASTDRIVE给出了系统可以访问的逻辑驱动器的最大数量,语法为LASTDRIVE=X,其中X为MS-DOS能识别的最后合法驱动器,合法值为A-Z。X最小应对应系统中安装的驱动器个数,缺省值为机器使用的最后驱动器加1。由于每个逻辑驱动器需要88字节的常规内存,所以对多于需要的逻辑驱动器保留空间,就会浪费内存。
如果用户使用NOVELL网络,网络会自动将网络驱动器设置为系统逻辑驱动器的后续驱动器的字母。
    9、SHARE
    SHARE命令可为硬盘安装文件共享和加锁功能,也可用于AUTOEXEC.BAT文件中,该命令在CONFIG.SYS文件中使用格式如下:INSTALL=C:\SHARE.EXE [/f:space][/L:locks]
    其中/f:space为用于记录文件共享信息的DOS存储区域分配的空间(字节),缺省值为2048。
    /L:LOCK用来设置可被锁定的文件数,缺省值为20。
    INSTALL命令的作用是使DOS将SHARE作为内存驻留程序调入。在CONFIG文件中安装SHARE能够节省一小部分内存。因为INSTALL在调入SHARE时不用为它创建环境。
    另外,SHARE常被用于程序共享文件的网络或多任务环境,在这些环境中,SHARE支持文件共享和锁定代码的装入,代码装入后,DOS就可以使用这些代码检查程序所有读出和写入请求的合法性。
    10、SHELL
    SHELL命令指定了一个不同于COMMAND.COM的命令解释器或者指明COMMAND.COM应该被另行设置。SHELL给出了指定DOS命令用的解释器的名称的位置,命令格式如下:
    SHELL=[DRIVE]PATH FILENAME[PARAMETERS]
    缺省命令解释器为COMMAND.COM。如果CONFIG.SYS中没有SHELL命令,DOS就在启动驱动器的根目录寻找COMMAND.COM,当COMMAND.COM在别的驱动器或目录中,或者使用其它的命令解释器时,就要使用SHELL命令,如果系统提示“OUT OF ENVIRONMENT SPACE”(环境空间不够)错误信息时,可以使用SHELL命令改变缺省值为160字节的环境空间。
    例如在CONFIG.SYS文件中加入下面的命令行
    SHELL=C:\DOS\COMMAND.COM /E:512

  下是一个典型的CONFIG.SYS文件内容:

  DEVICE=C:\DOS\HIMEM.SYS  (加载himem,扩展内存管理器)

  DEVICE=C:\DOS\EMM386.EXE NOEMS (创建上位内存以影子内存的形式并入扩展内存,不模拟扩充内存;如果参数为RAM,则表示用扩展内存来模拟扩充内存,并允许将扩展内存用作上位内存加载程序或驱动。)

  BUFFERS=15,0          (缓冲区数目)

  FILES=50            (同时打开的文件数)

  DOS=UMB            (系统把DOS本身放在什么地方)

  LASTDRIVE=Z          (驱动器盘符最大可以用大哪个)

  DOS=HIGH                         

  DEVICEHIGH=C:\DOS\ATAPI_CD.SYS /D:MSCD000 /I:0  (加载光驱驱动程序。)

  STACKS=9,256

  此外,在CONFIG中还可以配置菜单式多重任务选择的配置,用于不同任务的选择,比如玩游戏、设置虚拟磁盘等,不过在这些应用在目前已经不常用了,这里就不多做介绍了。

  有了config.sys以后,大部分的环境都能设置好,但是某些时候还是需要autoexec.bat来协作完成系统设备的加载,比如光驱。另外,有写设备直接使用命令来驱动的,就最好在autoexec.bat中执行来直接驱动,比如鼠标。

  下面是一个典型的autoexec.bat:

  关于AUTOEXEC.BAT

  电脑每次启动时都会自动寻找AUTOEXEC.BAT批处理文件,从而可执行一些每次开机都要执行的命令,比如设置路径PATH、加载鼠标驱动MOUSE、磁盘加速SMARTDRV等。

  下面给出一个比较典型的AUTOEXEC.BAT文件:

  @ECHO OFF '不显示命令行

  '设置提示符前有目录提示

  PROMPT &P& G

  PATH C:\DOS;C:\;C:\WINDOWS; C:\TOOLS '设置文件查找路径

  LH C:\MOUSE\MOUSE.COM

  '加载鼠标驱动程序

  LH C:\DOS\SMARTDRV.EXE

  '加载磁盘加速管理  

  LH C:\DOS\MSCDEX /S /D:MSCD000/M:12 /V '加载CD-ROM驱动

  '设置临时目录

  SET TEMP=C:\TEMP

  如果需要启动中文系统,也可以把中文系统的启动命令加入其中,自然启动以后就是中文的dos了。

  通过config.sys,autoexec.bat两个文件配合,完成绝大多数情况下DOS系统环境的配置

    CONFIG.SYS和AUTOEXEC.BAT文件的多重配置
    MS-DOS从6.0版开始,增加了CONFIG.SYS与AUTOEXEC.BAT多重配置功能,使我们运行不同系统配置要求的软件时,不必每次修改配置文件,然后再重新启动微机,给我们实际工作带来了极大的方便。
一、CONFIG.SYS的多重配置
CONFIG.SYS内的命令可以编成几个配置块(简称块BLOCK),用户可以以在屏幕菜单上点菜的形式,来选择本次开机需要的系统配置。
(一)MENU块
MENU块的命令有5种,分别为MENUITEM、MENUDEFAULT、MENUCOLOR、SUBMENU以及常用相关命令INCLUDE。
①menuitem命令
语法:menuitem=块名称[,菜单正文]
当menuitem命令只有块名称,而没注明菜单正文时,会将块名称作为菜单正文显示于屏幕;如果同时包含块名称与菜单正文时,会将菜单正文显示到屏幕,而不是显示块名称。
菜单正文最多可以有70个字符,一条menuitem命令可以表示菜单中的一个块名称,menu块最多只能有9条menuitem命令。
②menudefault命令
语法:menudefault=块名称[,时限]
本命令表示当菜单出现后,如果用户未于限定的时间内选择某个块,则系统会默认选择menudefault指定的块名称。
时限为0-90秒,采取倒计时方式。
③menucolor命令
语法:menucolor=X[,Y]
用户用于设置屏幕颜色。默认为黑底白字显示。
其中:参数X为正文颜色,Y为背景颜色。
X、Y对应颜色如下:
0 黑色(black)
1 蓝色(blue)
2 绿色(green)
3 青蓝色(cyan)
4 红色(red)
5 紫色(purple)
6 棕褐色(brown)
7 白色(white)
8 灰色(grey)
9 浅蓝色(light blue)
10 浅绿色(light green)
11 浅青蓝色(light cyan)
12 浅红色(light red)
13 浅紫色(light purple)
14 黄色(yellow)
15 浅白色(light white)
④submenu命令
语法:submenu=块名称[,菜单正文]
设置二级菜单命令,类似于menuitem命令。只可用于CONFIG.SYS的menu块。用户选择submenu指定的块时,系统视该块为下一级的menu块,且由其产生下一级菜单。该块名称为除menu以外的其它任何块名称,其可用命令与menu块的五种命令一样。
⑤include命令
语法:include=块名称
将include命令所指定的块包含到当前块中。实现了块间的共享,可简化CONFIG.SYS文件内容。
二COMMON块
common块为公共块。该块中的命令无论用户如何选择均被执行。同一个CONFIG.SYS文件内,如拥有多个common块,系统会根据其先后顺序,连续执行。
三.AUTOEXEC.BAT的多重配置
当MS-DOS执行了CONFIG.SYS的多重配置时,系统会将用户所选择的块名赋于环境变量CONFIG.SYS,以便在AUTOEXEC.BAT中根据所选配置块来执行相应的命令。
环境变量在自动批处理文件AUTOEXEC.BAT中的用法:
goto %config%
如:用户选择ucdos配置块,则环境变量config=ucdos,goto %config%表示自动批处理跳到标号为ucdos处执行。
在各个块将分别执行的命令最后面,附加goto end命令。
在AUTOEXEC.BAT结尾部分附加end标号(:END)。如果END下方仍有命令,这些命令将被所有块执行。
举例
(1)CONFIG.SYS
[menu]
menuitem=ucdos,ucdos 3.1
menucolor=7,1
menudefault=ucdos,30
numlock=on
submenu=game,play game
[common]
buffers=30
files=30
[game]
menuitem=san4
menuitem=koei
[san4]
device=c:\dos\himem.sys
device=c:\dos\setver.exe
device=c:\dos\emm386.exe ram
device=c:\dos\mouse.sys
[koei]
include=san4 调用san4块的全部配置
dos=high
[ucdos]
device=c:\dos\himem.sys
dos=high
[common]
(2)AUTOEXEC.BAT
@echo off
prompt $p$g
goto %config% 引用环境变量CONFIG
:ucdos
path c:\dos;c:\ucdos;c:\cced
c:\ucdos\rd16 %1
c:\ucdos\knl %2
c:\ucdos\py
goto end
:san4
cd\san4
san4
goto end
:koei
cd\koei
play
goto end
:end
c:\dos\doskey
echo on

多重配置的启动文件编写
    给微机编一个多重配置的启动文件是初学者很希望做的事,但苦于不会编,看书有时又不知其所以然。在这里,笔者以初学者的思路来讲述编制多重配置启动文件的方法,想必初学的朋友一看就会。
先编多重配置的config.sys文件。假如机器的原config.sys文件是:(右面中文为解释)
DEVICE=C:\DOS\HIMEM.SYS (加载扩展内存访问管理程序)
DEVICE=C:\DOS\EMM386.EXE RAM (加载扩充内存管理程序)
BUFFERS=30,4 (设置缓冲区,依内存大小而定,一般设为30)
FILES=30 (设置允许同时打开的文件的最大数)
DOS=UMB,HIGH (将DOS加载到上位内存或高端内存)
DEVICEHIGH/L:1,13920=C:\ECS\ECSCDAT.SYS/D:ECSCD001
(加载光驱的驱动程序)
SHELL=C:\DOS\COMMAND.COM C:/P (指定DOS外壳)
STACKS=9,256 (设置堆栈数)
下面以这个config.sys文件为基础,编辑一个多重配置的config.sys文件。基本思路是先编一个菜单,菜单的项目你需要几项就可以编几项,然后再根据各个项目需要的配置逐项编配(简便的方法是以原config.sys文件为基础,整段整句进行选编),基本格式是菜单名下面为菜单项,每一内容为一行,段与段之间空一行。为了让初学者更为明了,本例采用常用的几个系统作为例子。(后面中文为解释)
[menu] [菜单]
menuitem=DOS,The configuration for DOS
菜单项名DOS,为DOS配置
menuitem=Win,The configuration for WINDOWS
菜单项名WIN,为WINDOWS配置
menuitem=UCDOS,The configuration for UCDOS
菜单项名UCDOS,为UCDOS配置
submenu=YX,Da,Xiao,The configuration for YX
子菜单名游戏,大,小,为游戏配置
menudefault=Win,10 默认菜单
Win,等待时间10秒(自定)
空一行
[common] [公用命令]
BUFFERS=30,4
FILES=30
FCBS=4,0
SHELL=C:\DOS\COMMAND.COM C:/P
STACKS=9,256
空一行
[DOS] DOS菜单项内容
DEVICE=C:\DOS\HIMEM.SYS 使用DOS时的配置
DEVICE=C:\DOS\EMM386.EXE RAM
DEVICEHIGH/L:1,13920=C:ECS\ECSCDAT.SYS/D:ECSCD001 (加载光驱)
[Win] Win菜单项内容
DEVICE=C:\DOS\HIMEM.SYS 使用Windows的配置
DEVICE=C:\DOS\EMM386.EXE noems
(因为Windows可直接管理扩充内存,故设noems)
DEVICEHGH /L:1,13920=C:\ECS\ECSCDAT.SYS/D:ECSCD001 (加载光驱)
[UCDOS]
UCDOS菜单项内容(使用UCDOS时的配置,由于UCDOS可以自己配置内存环境,故可设可不设)
(空一行)
[YX] 游戏菜单项内容 下面还有子菜单
menuitem Da,The configuration for DA YX
子菜单项名Da,为大游戏配置
menuitem Xiao,The configuration for Xiao yx
子菜单项为Xiao,为小游戏配置
menudefault Xiao,8 默认子菜单,Xiao,等待8秒
[Da] 为大游戏配置
DEVICE=C:\DOS\HIMEM.SYS
DEVICEHIGH/L:1,13920=C:\ECS\ECSCDAT.SYS/D:ECSCD001
空一行
[Xiao] 为小游戏设置
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE RAM
DEVICEHIGH /L:1,13920=C:\ECS\ECSCDAT.SYS/D:ECSCD001 (完)
由上可知,多重配置的config.sys实际就是将多个config.sys并列在一起,而这些config.sys实际上是由一个config.sys演变出来的,且又是紧紧围绕如何对内存进行配置的。只不过前面编了一个可选的菜单,而后面的则是为了少用文字,将各项的共同部分提了出来作为一小段共同命令ap[common],其它略有不同的才做了分别编配,需注意的是,“菜单”和“菜单项”必须用固定语句[menu]和“menuitem”,公共命令也须用固定语句[common],否则机器会不认识。菜单项目名字可以自取,以直观为好,需用方括符括上,菜单项可多可少,也可不用子菜单项,视具体要求而定。
接下来再编辑与之相对应的Autoexec.bat文件。即如果在Config.sys中选择了某项,则Autoexec.bat也只执行对应项的内容。假如机器的原Autoexec.bat文件是:
@ECHO OFF (加载过程显开关)
C:\WINDOWS\ESSCFG.EXE /I:7 /D:1 (载入声卡驱动程序)
C:\WINDOWS\ESSVOL.EXE /V:8 /L:8/W:8 /M:0 /C:8 /S:8
(载入音响图形界面)
LH C:\DOS\AMOUSE\AMOUSE /2 (装入鼠标)
LH /L:0;1,46992 /S C:\WINDOWS\SMARTDRV.EXE 1024 512 /Q
(装入磁盘加速驱动程序)
LH /L:1,36224 C:\ECS\MSCDEX /V/D:ECSCD001 /M:10
(装入光驱管理程序)
PATH C:\DOS;C:\WINDOWS;C:\UCDOS;C:\YLDICT
(指定查找文件的路径及次序)
SET TEMP=C:\TEMP (指定临时文件放置的位置)
下面以这个Autoexec.bat文件为基础,编一个与config.sys相对应的多重Autoexec.bat文件。(第一段依然为共同内容)
@ECHO OFF
PATH C:\DOS;C:\WINDOWS;C:\WIN31;C:\UCDOS;C:\YLDICT
SET TEMP=C:\TEMP
GOTO%config% (此句为固定语句,意为转到config.sys对应的:项上)
:DOS
(如果选择了DOS,DOS加载的内容如下。注意前面的冒号:一定不能忽略)
C:\WINDOWS\ESSCFG.EXE/I:7 /D:1
C:\WINDOWS\ESSVOL.EXE/V:8/L:8/W:8/M:0/C:8/S:8
LH C:\DOS\AMOUSE\AMOUSE/2
LH /L:O;1,46992/S C:\DOS\SMARTDRV.EXE 2048 512 /Q
GOTO END (此句也为固定语句,意为运行到此结束)
:Win (同上)
C:\WINDOWS\ESSCFG.EXE/I:7 /D:1
C:\WINDOWS\ESSVOL.EXE/V:8/L:8/W:8/M:0/C:8/S:8
rem /L:O;1,46992 /S C:\WINDOWS\SMARTDRV.EXE 1024 512/Q
LH/L:1,36224 C:\ECS\MSCDEX/V/D:ECSCD001 /M:10
GOTO END (此句也为固定语句,即运行到此结束)
:UCDOS (如果选择进入UCDOS,即执行:UCDOS的内容。)
LH C:\DOS\AMOUSE\AMOUSE/2
Call UCDOS (呼出UCDOS批处理命令)
GOTO END
:Da (如果希望玩大游戏,选择YX后再选择此即可)
C:\WINDOWS\ESSCFG.EXE/I:7/D:1
C:\WINDOWS\ESSVOL.EXE/V:8/L:8/W:8/M:0/C:8/S:8
LH/L:1,36224 C:\ECS\MSCDEX/V/D:ECSCD001 /M:10
LH C:\DOS\AMOUSE\AMOUSE/2
GOTO END
空一行
:Xiao (如果只是玩小游戏,选择YX后再选择此即可)
C:\WINDOWS\ESSCFG.EXE /I:7 /D:1
C:\WINDOWS\ESSVOL.EXE /V:8/L:8/W:8/M:0/C:8/S:8
LH/L:1,36224 C:\ECS\MSCDEX/V /D:ECSCD001 /M:10
LH/L:0;1,46992 /s C:\DOS\SMART DRV.EXE 1024/Q
LH C:\DOS\AMOUSE\AMOUSE/2
GOTO END
:END (此句也为固定语句,即到此全部结束)
由此可见,多重配置的config.sys和Autoexec.bat是一一对应的,只要明白了其中几个固定语句的意义以及基本格式就很容易编制这两个文件。文件编好后重新启动机器,会出现4个菜单供你选择。
1.The configuration for DOS
2.The configuration for WINDOWS
3.The configuration for UCDOS
4.The configation for YX
menudfault Win,10
机器同时以10秒为限倒计时,倘若你10秒钟未作出选择,机器将自动进入到默认的系统中。(此例默认为Windows)
上例配置较为简单,主要是授以原则和方法,也可以把其作为一公式。待你对内存管理和文件运行的环境有了一定的运用能力后,还可以编制得更精细一些。


我见到很多网战都有做DOS超酷启动盘……可不知道怎么做的~自己也很想做一个。。。昨天看见狼上线!2话不说……抄家伙~呵呵
教了我一个晚上才教会……大概因为我比较笨吧~现在拿来和大家分享一下
我还是先把我做的批处理写一下吧~
@echo off
PROMPT $P$G$G$G$G
:main
echo MENU
echo 1.ghost
echo 2.diskgen
echo 3.sfdisk
echo 4.other
echo 5.exit
choice /c:12345 Please Select... 
if errorlevel 5 goto End
if errorlevel 4 goto other
if errorlevel 3 goto sfdisk
if errorlevel 2 goto diskgen
if errorlevel 1 goto ghost
:ghost
cls
ghost
goto main
:diskgen
cls
diskgen
goto main
:sfdisk
cls
sfdisk
goto main
:dir
cls
dir
goto main
:ver
cls
echo Ver:1.0 author:seadogs
goto main
:other
cls
echo submenu2
echo 1.about
echo 2.A filelist
echo 3.startmain
choice /c:123 Please Select...
if errorlevel 3 goto main
if errorlevel 2 goto dir
if errorlevel 1 goto ver
:End
下面我开始解释了~最基本的是ECHO……这是个内部命令,可以在DOS提示符下查看帮助
ECHO OFF是不显示下面的东西~自己去试试就知道了。。。但是对你操作的结果他不会影响~而且直接用ECHO显示的东西他不会隐藏掉。。。这个东西自己试一下就知道了~~想当初我也是自己试的
如果直接使用ECHO之后空格跟一些东西的话他就会显示你后面所输入的东西
@——为什么要加@呢?@是做单行隐藏的~和ECHO的效果不同……
你可以先试试办ECHO OFF
之后再试试办@ECHO OFF
后者连ECHO OFF都不会显示~~
下面是PROMPT $P$G$G$G$G这一句
这句也是个DOS命令,可以在DOS提示符上键入PROMPT /?来查看帮助
PROMPT的作用就是可以改变提示符的样子
$P代表当前路径~~$G就代表>符
连起来就是当前路径后面增加4个>
如:在C盘下的话就是C:\>>>>
更多的用法大家可以查看帮助~很酷的
:main是什么意思呢?好象有好多带:号的
是的带:的表示关键字!因为后面就要使用GOTO语句
那就先解释一下GOTO语句吧
学过编程的朋友都应该知道这个语句。。。GOTO的意思顾名思义~~就是到一个什么什么的位置
GOTO的用法大家也可以查看帮助得到~和上面的一样~都是DOS命令
GOTO需要通过关键字来确定程序将要跳到那里
而:就是关键字的表示符
如: :mian
那关键字就是main了
在调用的时候就使用goto main就可以了~是不是很简单
接下来看到的是:
echo MENU
echo 1.ghost
echo 2.diskgen
echo 3.sfdisk
echo 4.other
echo 5.exit
这5行用于显示
在DOS下就会看到这个菜单了
choice /c:12345 Please Select... 
if errorlevel 5 goto End
if errorlevel 4 goto kkk
if errorlevel 3 goto sfdisk
if errorlevel 2 goto diskgen
if errorlevel 1 goto ghost
这里是这个批处理的精华的地方了~~他用到了choice这个命令
大家可以看看字典~choice是选择的意思
同样~这个词也可以在DOS下很方便的查看帮助
/C后面跟的就是指定只能输入的字符
Please Select...是提示信息~也就是请选择1、2、3、4、5其中的一个
注意:这是不按1、2、3、4、5或中止批处理的话是不能继续下去的
大家可以试试~一试你就明白了
if errorlevel 5 goto End
解释一下这一句……意思就是如果按下了5就跳到END关键字处
看一下整个批处理就知道了~END在最后~跳到那里程序就会结束了
其他的都一样,这是if errorlevel配合GOTO的~
if errorlevel也可以配合别的语句。。。如:if errorlevel 5 goto echo 12345
这样的话在选择5之后就会显示12345之后继续执行下面的东西
最后是CLS命令
这个很简单的了~也是一个命令……可以在帮助中找到你要找的!
他是一个清屏命令运行之后你现在屏幕上的信息将会清空
好了~基本说完了……再串一下
本批处理的作用大概效果是这样的
运行批处理会出现菜单
MENU
1.ghost
2.diskgen
3.sfdisk
4.other
5.exit
Please Select...[1、2、3、4、5]?
下面进行选择……如果选择1就会运行GHOT
2是DISKGEN
3是SFDISK
4是OTHER
5是退出
很简单的……当然~这些软件都要在同路径下面
当按下1时会执行GHOST关键字里的东西
:ghost
cls
ghost
goto main
也就是清除屏幕上的东西……之后运行GHOST
等你退出GHOST的时候他会跳回MAIN选单
因为最后一句是goto main
我在最开始的时候加了这么一个关键字
其他4项都一样的~只有other选项不太一样……other还有下一级菜单(其实差不多了啦)
:other
cls
echo submenu2
echo 1.about
echo 2.A filelist
echo 3.startmain
choice /c:123 Please Select...
if errorlevel 3 goto main
if errorlevel 2 goto dir
if errorlevel 1 goto ver
和主菜单差不多
先清屏……之后显示选项……之后选择
为什么if errorlevel 1 goto ver这句不用
if errorlevel 1 echo Ver:1.0 author:seadogs呢?
因为这样就不能返回主菜单了
要注意的是选择选项的指向要从后往前写……问我为什么?我也问过狼……答案是规定~哈哈
if errorlevel这个东西……只能跟一句~~所以不能象这么使用
if errorlevel 1 echo Ver:1.0 author:seadogs
GOTO MAIN
还要注意一点就是这写关键字下的一个个小程序要写在需要选择程序的前面……否则的话要用GOTO对他做出指向!否则的话他会把下面的东西全部运行一次……不信你就试试~哈
可是你会问了~~这样只能做成一个批处理……如何和启动盘联系起来呢?
其实很简单的了~~你先把这个做出来的批处理改名为Autoexec.bat
之后做一张启动盘……把这个文件考上去就可以了~不信你自己试试
当然……还要把你需要用到的软件一起考上去
是不是很酷呢?
可是你会发现这个菜单不能象启动多系统时候的选择菜单一样。。。不能进行那种选择之后按回车的操作
那些启动盘倒底是怎么做的呢?
他用到了配置文件CONFIG。SYS
下面我继续针对这个来给大家讲一下
还是先找个例子吧:
这是狼在给我讲的时候做了个这么个CONFIG.SYS文件来让我理解CONFIG中各菜单的意义
疾风之狼:
不太清楚你要做哪种多级选单,启动时多层选单是由Config.sys来建立的,一个例子
[menu]
menuitem=menu1
menuitem=menu2
submenu=sub
[menu1]
[menu2]
[sub]
menuitem=sub-1
menuitem=sub-2
[sub-1]
[sub-2]
以此方法可以建立更多级的菜单,配合Autoexec.bat中的goto %config%来执行不同的程序。

很简单……大体上就是几个菜单而已
[Menu]你启动的时候会显示的菜单了……
MENUITEM代表一般选项
还有个SUBMENU,就是带子菜单的选项了!
这个CONFIG.SYS中的这种菜单形式和上面的GOTO很象
前面是关键字……后面是指向
如:
[menu]
menuitem=menu1
menuitem=menu2
submenu=sub
这样的话就会显示3个菜单
menu1
menu2
sub
大家可以现在试试……为什么提示英文错误呢?那是因为你没有做指向呢
[menu1]
[menu2]
[sub]
这里大家就理解为指向吧
这个的作用和GOTO里的关键字一样~~让程序能够找到选单所对应的项目
大家去做这么一个菜单就能很好的理解了……在哪里试呢?去把你C盘的CONFIG.SYS拿来试试咯。。。实在不行就做个98启动盘~之后建这么一个配置文件
上面的例子在选择优录取
menu1
menu2时不会有任何反映
选择sub的时候选会变成选项
sub-1
sub-2
当然……选择了也没反映~因为我们还没做配置
菜单到这里我想大家应该理解得差不多了~下面我们看一个叫超酷备份还原启动工具盘的CONFIG.sys文件:
[MENU]
MENUITEM=SFDISK,SFDISK
MENUITEM=CDROM,Start Cdrom
MENUITEM=GHOST-BAK,BACKUP SYSTEM
MENUITEM=GHOST-FIX,FIX SYSTEM
MENUITEM=SYS-C,SYS C:
MENUITEM=HDFIX,HDFIX
MENUITEM=README,README

[SFDISK]
[CDROM]
device=himem.sys /TESTMEM:OFF
dos=high,umb
files=40
lastdrive=m
device=oakcdrom.sys /D:MSCD000
[GHOST-FIX]
[GHOST-BAK]
[HDFIX]
[README]
看到了吧~其实比我们看的那个还简单呢。。。因为没有子菜单啊~
里面的东西看不懂没关系~框架出来了就可以了
效果是这样的一个选择菜单
SFDISK,SFDISK
CDROM,Start Cdrom
GHOST-BAK,BACKUP SYSTEM
GHOST-FIX,FIX SYSTEM
SYS-C,SYS C:
HDFIX,HDFIX
README,README
他几乎没做什么配置……发现了没?
只有[CDROM]下面有些东西而已
那他是不是选择了之后没有效果呢?是的!
注意上面狼还有这么一句:
以此方法可以建立更多级的菜单,配合Autoexec.bat中的goto %config%来执行不同的程序。
GOTO大家都知道了~Autoexec.bat也知道了吧~(他在启动的时候运行在CONFIG.SYS之后)
那我们先放着CD-ROM不管去看看他的Autoexec.bat吧!

超酷备份还原启动工具盘的Autoexec.bat中的内容如下:
@ECHO OFF
PROMPT $P$G
PATH A:\;C:\
set temp=c:\
set tmp=c:\
GOTO %CONFIG%
:SFDISK
SFDISK
GOTO END
:CDROM
MSCDEX /D:MSCD000 /K
SMARTDRV
GOTO END
:GHOST-FIX
GHOST -clone,mode=pload,src=e:\sys\winbak.gho:1,dst=1:1 -SURE
GOTO END
:GHOST-BAK
MD E:\SYS
GHOST -clone,mode=pdump,src=1:1,dst=e:\sys\winbak.gho -z1
ATTRIB +r +s +h e:\sys
GOTO END
:SYS-C
SYS C:
GOTO END
:HDFIX
HDFIX
GOTO END
:README
README
GOTO END
:END
大家基本上看的懂吧~~只是有几点不明白而已
GHOST-FIX和GHOST-BAK里面的参数请参考GHOST参数大全之类的东西~在这里不做重点讲
set temp=c:\
set tmp=c:\
作用是把C盘暂时作为临时文件存放的地方
几乎全都看的懂吧!只差CD-ROM
还一句就是GOTO %CONFIG%了吧
GOTO %CONFIG%是什么呢?
注意上面狼有这么一句:
以此方法可以建立更多级的菜单,配合Autoexec.bat中的goto %config%来执行不同的程序。
%config%是个变量!来存放你所选择的菜单(注意!不是显示出来的选项!而是你刚才所指向的那个选项)
如上面的SYS-C
CONFIG.sys里有这么2句
MENUITEM=SYS-C,SYS C:
[SYS-C]
MENUITEM=后面跟的就是启动时候显示的选项!而[SYS-C]括号里的SYS-C才是真正“选中”的东西!
而这个SYS-C也就是你选择后存放在%config%这个变量里的东西!
大家不需要理解的多么完全……知道这么用就可以了
总之在Autoexec.bat中的goto %config%是运行选择的项目
而且Autoexec.bat中GOTO的关键字要对应%config%中的[]里的东西!
现在光驱的那一部分大家可以不试……其他的大家可以做一做~是不是很酷呢?别忘了把会用到的软件拷到启动盘里哦!
光驱的那一部分是让光驱可以在DOS下运行
跟开机加载光驱是一个效果
[CDROM]
device=himem.sys /TESTMEM:OFF
dos=high,umb
files=40
lastdrive=m
device=oakcdrom.sys /D:MSCD000

:CDROM
MSCDEX /D:MSCD000 /K
SMARTDRV
GOTO END
这里我也理解的不是很透~大家知道怎么用就可以了~
:CDROM关键字下的MSCDEX /D:MSCD000 /K里面的/D:MSCD000要和CONFIG.sys中的[CDROM]里的device=oakcdrom.sys /D:MSCD000的/D:MSCD000对应!数值是可以改的!但不能不一样……
再就是加载内存管理、DOS加载到高端内存、磁盘高速缓存什么的~大家知道怎么用就可以了
做完了没?自己去试试~是不是很爽呢?
DOS中对EXE的调用直接写文件名就可以了~
对批处理用CALL 文件名.bat
对.COM好象也是用CALL……
懒的试了……大家自己爽吧!
前者的优点是灵活性好!看着效果不太好……因为是选择数字或字母来进行选择的
后者的优点是看着效果比较好看~不过灵活性不好!运行一次之后就要重新启动才能再重新显示选择菜单!
当然……这些东西现在都有软件可以做~不过自己做出来不是更有DIRER的风范嘛!哈哈~
再说一下小技巧!便于你们能把这个批处理做的更好看一些……
ECHO. (显示空行)
@  (不显示本行的内容)
PROMPT (改变提示符)
exist用来判断是否存在这个文件(目录)  可配合IF来使用!如一例:
因为98的注册表主要是user.dat和system.dat,可以如下
1、复制现有的user.dat和system.dat,也放在windows下,比如名为user.old和system.old
2、在C:\autoexec.bat中加入如下内容
@echo off
c:
cd \windows
attrib *.dat -h -s -r
if exist system.old del system.dat
if exist user.old del user.dat
if not exist user.dat copy user.old user.dat
if not exist system.dat copy system.old system.dat
attrib system.dat +r +h
attrib user.dat +r +h
效果是每次开机还原注册表
config.sys大家自己看CONFIG全解吧~GOOGLE上有
引:比如要显示的文件名是bios.txt,以下命令选一个就行
type bios.txt
copy bios.txt con
要修改文本文件的话也有几个办法。
如果只是要向最后追加东东,比如是Hello world,那么就是
echo Hello world >> bios.txt
不要看错了,上面是>>,要是只用一个>的话,你以前的东东会被清掉的,就不是追加了
除此以外的编辑大概只能用DOS下全屏编辑器比如Edit、PE或是QE之类的了。

RADME文件可以TXT2EXE来做……相关资料在GOOGLE能搜索到~
不过好象没有能干下载的~我传上来一个
还一个问题就是不能显示中文……做中文启动盘是比较麻烦的~我软驱坏了~没有试过……
不过和个高手讨论了一下~流程大概是这样的!
大家知道Pdos95.bat这个文件吗?在98的DOS下加载他就能显示中文了!
打开批处理大家可以看到所需要的文件!
pbios
font16
hzvio95
hzkbd
instdict pinyin
instdict shanpin
instdict quwei
instdict guobiao
ctrlpan
98所在盘的WINDOWS\COMMAND差不多全有了!没有的也能搜索到~好象有一个不在……
instdict pinyin
instdict shanpin
instdict quwei
instdict guobiao
是所对应的输入法!
比如想用拼音的话就把C:Windows\Command\pinyin.tbl拷过去。。。其他的一样~
最后要自己再建一个PDOS95的批处理哦!名字当然可以改了……里面的东西除了
instdict pinyin
instdict shanpin
instdict quwei
instdict guobiao
其他的不变~这些你拷了什么就写什么
想显示中文的话就在Autoexec.bat中的第一句加载你的批处理就行了!
CONFIG里好象是不行了……

最后讲一下PATH!
顾名思义PATH就是路径
DOS分内部命令和外部命令……内部命令在COMMAND。COM中存放~其他的外部命令都在98盘的WINDOWS\COMMAND文件夹里
可是有时候开机为什么在DOS里输入一个命令他不能运行,而必须要到C盘的WINDOWS\COMMAND里运行呢?因为DOS会先在本文件夹里找你所输入的命令~之后搜索完毕后会搜索PATH中的路径!要是PATH里和本文件夹里都没有的话就会提示找不到!
看来PATH还蛮有用啊~那么我下面就讲一下怎么使用
PATH的使用很简单!直接把路径赋给他就OK了!如:PATH C:\
中件带一个空格!PATH的赋值一般都在AUTOEXEC.BAT里
如:PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\PROGRA~1\WIN98RK;%PATH%
多个路径在中间用分号隔开!%PATH%是什么呢?
这里的%PATH%同%CONFIG%一样~~都是一个变量而已,里面存放了以前的PATH
如:PATH D:\;A:\
后面又有一句是PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\PROGRA~1\WIN98RK;%PATH%
那么DOS在本文件夹中找不到的话就会去C:\WINDOWS;C:\WINDOWS\COMMAND;C:\PROGRA~1\WIN98RK;%PATH%中去找!而这时的%PATH%代表D:\;A:\
如果在后面加一个PATH E:\的话前面的都会清空!如果不用PATH E:\而用PATH E:\;%PATH%的话就会保存原来的路径!
在PATH中重复是没关系的……不过重复了没意义~
本盘启动只做实验用而已~~不必评价这张盘的好坏~~主要是为了让大家自己能做出自己的超级启动盘!
就这么多了……哇!好长啊!没想到自己一写写了这么长~受刺激了……大家慢慢看吧