Board logo

标题: 请大家指教啊!我想做一只这样的启动盘。 [打印本页]

作者: copy114     时间: 2002-11-10 00:00    标题: 请大家指教啊!我想做一只这样的启动盘。

我想做一个可以引导的启动盘。当启动后就会利用虚拟内存建立一个虚拟盘,如Z盘,然后在虚拟盘上建立三个目录,如bin,abc,win,最后把我的img文件里面的几个压缩文件XX.cab自动解压到虚拟盘指定的目录上,我应该怎样做呢?请大家指教一下,还有,因为我是菜鸟,所以还是请大家详细的指教一下,可以吗?
作者: ko20010214     时间: 2002-11-10 00:00
请看一实例。
下面是autoexec.bat的内容:">>"后的是我现在加的注解
===================
@echo off           >>这是关闭回显的命令。@是表示这条命令本身也不显示。
SET DIRCMD=/OGN /4 >>这是设置DIR命令的默认方式  
           >>/OGN参数表示按组目录的和名称顺序显示
           >>/4参数表示年份按4位数字来表示。
set ramd=z      >>这是设置一个变量ramd,用来表示虚拟盘
set cdrom=x     >>这是设置一个变量cdrom,用来表示光驱
xmsdsk 8192 %ramd%: /y /t >>这是设置虚拟盘的命令 8192是指盘的大小为8M
                   >>  % ramd%:是指定虚拟盘的盘符为ramd,结合上面
                   >>  ramd=z,即指定盘符为Z盘。/Y是确信这个操作
      >>/t是指装载到XMS的高位(top)
mkdir %ramd%:\temp   >>在虚拟盘上建立一个目录temp
set tmp=%ramd%:\temp     >>设置一个变量tmp
set temp=%ramd%:\temp >>设置一个变量temp
copy a:\command.com %ramd%:\ >nul  >>复制A盘的command.com文件到虚拟盘,
                                    >> >NUL是指这个命令的屏幕信息输入到NUL这
                      >> 个特殊的设备上去,这是个空设备。所以就是
                                   >>起到让这个命令不回显的作用。
set comspec=%ramd%:\command.com>>设置一个变量comspec,作用是指定           >>命令解释程序command.com的位置。
mkdir %ramd%:\bin    >>在虚拟盘上建立一个目录bin
mkdir %ramd%:\doscmd       >>在虚拟盘上建立一个目录doscmd
set ebddir=%ramd%:\doscmd     >>设置一个变量edddir,作用是指定ebd文件的目录
set path=%ramd%:\bin   >>设置一个变量path,作用是指定路径
copy a:\help.exe %ramd%:\bin >nul >>不回显地复制A盘的help.exe文件
       >>到虚拟盘的bin目录里。
lh mscdex /D:MSCD001 /L:%CDROM% >>加载光驱驱动,lh是加载到高位内存里,
                      >>/D:MSCD001,参数D是设备名称,这个设备名
       >>是MSCD001,和你的config.sys里的名称应一致
copy a:\extract.exe %ramd%:\bin >nul >>不回显地复制A盘的extract.exe文件到虚
               >>拟盘的bin目录里
echo Extracting device driver(s)...  >>显示一条信息 "Extracting device driver(s)..."
                                  >>意思是 正在解压设备驱动(文件)。。。
mkdir %ramd%:\device     >>在虚拟盘上建立一个目录device
extract /y /l %ramd%:\device /e a:\scsi.cab >nul>>不回显地解压A盘的scsi.cab这个压
           >>缩包到虚拟盘的device目录里。/Y参数表示
           >>确认这个操作,/L参数表示将文件解压到
           >>指定的目录里。这里是device目录里。
%ramd%:\device\device %ramd%:\device\btdosm.sys >>这里是加载各种驱动的命令
%ramd%:\device\device %ramd%:\device\flashpt.sys
%ramd%:\device\device %ramd%:\device\btcdrom.sys /D:MSCD001
%ramd%:\device\device %ramd%:\device\aspi2dos.sys
%ramd%:\device\device %ramd%:\device\aspi8dos.sys
%ramd%:\device\device %ramd%:\device\aspi4dos.sys
%ramd%:\device\device %ramd%:\device\aspi8u2.sys
%ramd%:\device\device %ramd%:\device\aspicd.sys /D:MSCD001
extract /y /l %ramd%:\bin /e a:\menu.cab >nul >>不回显地解压A盘的menui.cab这
                                                 >> 个压缩包到虚拟盘的bin目录里
extract /y /l %ramd%:\doscmd /e a:\ebd.cab >nul >>不回显地解压A盘的ebd.cab这
                           >>个压缩包到虚拟盘的doscmd目录里
set path=%path%;%ramd%:\doscmd      >>设置一个变量path,就是设置路径
                                       >>用;来分隔多个路径,path=%path%的
             >>意思是让现在的path变量(路径)的为
             >>原来的路径,(;后面是新加进的路径)
             >>整个意思是设置新路径为旧路径加上新
             >>加入的路径
LH CTMOUSE >NUL    >>不回显地装载鼠标驱动到高位内存里
lh smartdrv >NUL     >>不回显地装载smartdrv到高位内存里
                                     >>smartdrv是一个磁盘缓存驱动
ECHO.         >>echo后面加一个. 表示显示一空行
echo To view Help, type HELP and then press ENTER.>>显示一条信息
       >>意思是 想看帮助的话,请键入Help并按回车键
echo.     >>echo后面加一个. 表示显示一空行

======================
文件内容完。
不知道这样讲你觉得行不行? :-)








[此贴子已经被作者于2002-11-10 21:51:00编辑过]



作者: ko20010214     时间: 2002-11-10 00:00
对应的comfig.sys文件如下:
=================
DEVICE=UMBPCI.SYS
DEVICE=HIRAM.EXE
DEVICEHIGH=HIMEM.SYS /TESTMEM:OFF
DEVICEHIGH=VIDE-CDD.SYS /D:MSCD001  >>加载光驱驱动
DEVICEHIGH=CLOAKING.EXE
DOS=HIGH,UMB,AUTO
SHELL=COMMAND.COM /P /E:2048 /U:128 /L:256
FILESHIGH=30
BUFFERSHIGH=30,0
STACKSHIGH=9,256
LASTDRIVEHIGH=Z
==============
文件内容完

作者: langhua     时间: 2002-11-10 00:00
恩!!!
我说KO
成呀!!!!!原来的在DOS方面也VERY GOOD呀!!!

看来我以后有什么问题叫直接找你了!!!!呵呵!!!
作者: copy114     时间: 2002-11-11 00:00
mkdir %ramd%:\temp   >>在虚拟盘上建立一个目录temp
set tmp=%ramd%:\temp     >>设置一个变量tmp
set temp=%ramd%:\temp >>设置一个变量temp

我想问问这里,它在第一条不是建立了一个temp的目录了吗?而第三条又设置一个变量temp
这个变量是什么来的,是不是一个文件夹啊?
作者: ko20010214     时间: 2002-11-11 00:00
此temp非彼temp。
第一条上的temp,是个目录。我们习惯上命名为temp,而实际你可以任意命名它。
第二和第三条的tmp和temp,实际上是在DOS内部约定的一个变量,这个名称是不能改的。
在DOS内部约定了一系列的变量,用于环境设置。
象path,comspec,dircmd,等等。。。这就象编程语言中所讲的保留字一样。
而且这三条语句中,第一条和后面两条作用和意义不一样。
第一条是建立一个目录,这个目录叫temp
第二、三条是设置环境变量,让DOS在要用到临时目录时知道往哪里写临时数据
作者: copy114     时间: 2002-11-11 00:00
mkdir %ramd%:\device     >>在虚拟盘上建立一个目录device
extract /y /l %ramd%:\device /e a:\scsi.cab >nul>>不回显地解压A盘的scsi.cab这个压
           >>缩包到虚拟盘的device目录里。/Y参数表示
           >>确认这个操作,/L参数表示将文件解压到
           >>指定的目录里。这里是device目录里。
%ramd%:\device\device %ramd%:\device\btdosm.sys >>这里是加载各种驱动的命令
%ramd%:\device\device %ramd%:\device\flashpt.sys
%ramd%:\device\device %ramd%:\device\btcdrom.sys /D:MSCD001
%ramd%:\device\device %ramd%:\device\aspi2dos.sys
%ramd%:\device\device %ramd%:\device\aspi8dos.sys
%ramd%:\device\device %ramd%:\device\aspi4dos.sys
%ramd%:\device\device %ramd%:\device\aspi8u2.sys
%ramd%:\device\device %ramd%:\device\aspicd.sys /D:MSCD001

这段我不要行不行啊?如果我是只加载CDROM的情况下。这些都是加载SCSI的光驱所需要的驱动程序来吗?
作者: ko20010214     时间: 2002-11-11 00:00
可以。你只要加载CDROM就只需lh mscdex /D:MSCD001 /L:%CDROM% >>加载光驱驱动这些驱动具体我也不知道是什么。大概是winme或winme以后的系统要的吧。。。(为了兼容???)
作者: copy114     时间: 2002-11-11 00:00
我明白了,谢谢版主的细心教导,我也学会不少东西了,不过还请版主也帮我解释一下那个config.sys的具体命令内容吧,麻烦你了,

DEVICE=UMBPCI.SYS
DEVICE=HIRAM.EXE
DEVICEHIGH=HIMEM.SYS /TESTMEM:OFF
DEVICEHIGH=VIDE-CDD.SYS /D:MSCD001  >>加载光驱驱动
DEVICEHIGH=CLOAKING.EXE
DOS=HIGH,UMB,AUTO
SHELL=COMMAND.COM /P /E:2048 /U:128 /L:256
FILESHIGH=30
BUFFERSHIGH=30,0
STACKSHIGH=9,256
LASTDRIVEHIGH=Z    我只知道这个是定义最后一个盘符是Z盘。其它的也不那么懂啊。请指教
作者: ko20010214     时间: 2002-11-12 00:00
SHELL=COMMAND.COM /P /E:2048 /U:128 /L:256
这一句难点。其它的wengier的网站里的DOS文章里有提到。
你可以在DOS下键入command/?获得帮助。实在不行,你可以去看我的《如何获得dos命令的帮助》一文来学会怎么获得dos命令的帮助!