|
5yue5
初级用户
积分 69
发帖 34
注册 2009-2-8
状态 离线
|
『楼 主』:
寻找虚拟磁盘盘符的问题---ramdrive
寻找dos的虚拟磁盘盘符程序 ---问题求解
在dos里面寻找虚拟磁盘盘符,其目的在于编程时便于指定目标。
问题求解---关于dos的 寻找ramdrive虚拟磁盘的程序
我用grub,winiamg做了个dos镜像启动。,再用UltraISO做了个光盘镜像start.ISO,我在winxp上。有两个镜像一个是start.img,另一个是start.iso。
grub的配置菜单menu.lst如下:
color black/cyan yellow/cyan
timeout 15
default 0
title memdrive duplicated from floppy image file (hd0,0)/start.img
map --mem (hd0,0)/start.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
savedefault --wait=2
title find and load NTLDR of Windows NT/2K/XP
fallback 1
find --set-root /ntldr
chainloader /ntldr
savedefault --wait=2
title cdrom-start from start.sio
map --mem (hd0,0)/start.iso (hd32)
map --hook
chainloader (hd32)
boot
title commandline
savedefault --wait=2
commandline
#外部命令不能用。
#title floppy (fd0) 这是软盘启动,我没有,所以注释掉。
#chainloader (fd0)+1
#rootnoverify (fd0)
#savedefault --wait=2
title back to dos
savedefault --wait=2
quit
title reboot
savedefault --wait=2
reboot
title halt
savedefault --wait=2
halt
经检验,各种启动方式都可以正常的进入dos。
我的config.sys配置如下:
[menu]
menuitem=nomal, ###### nomal load cdrom
menuitem=myself,###### no cdrom
menudefault=nomal,10
menucolor=2,0
[nomal]
device=himem.sys /testmem:off
device=emm386.exe ram
device=vide-cdd.sys /d:mscd001
[myself]
device=himem.sys
device=emm386.exe ram
[common]
dos=high,umb
devicehigh=ramdrive.sys 2048 /e
;devicehigh=drvspace.sys /move
files=10
buffers=10
lastdrive=z
看到这句没有:devicehigh=ramdrive.sys 2048 /e
我加载了ramdrive。这时的虚拟盘的盘符在环境变量里面用set看不到。
于是我写了下面的framd.bat程序,用来寻找环境变量,即找虚拟磁盘的盘符:
@echo off
rem find disk ms-ms-ramdrive
set ramd=0
,vol c: | find /i "c is ms-ramdrive"
,if not errorlevel 1 set ramd=c:
,if not %ramd%==0 goto end
vol d: | find /i "d ms-ramdrive"
if not errorlevel 1 set ramd=d:
if not %ramd%==0 goto end
vol e: | find /i "e is ms-ramdrive"
if not errorlevel 1 set ramd=e:
if not %ramd%==0 goto end
vol f: | find /i "f is ms-ramdrive"
if not errorlevel 1 set ramd=f:
if not %ramd%==0 goto end
vol g: | find /i "g is ms-ramdrive"
if not errorlevel 1 set ramd=g:
if not %ramd%==0 goto end
vol h: | find /i "h is ms-ramdrive"
if not errorlevel 1 set ramd=h:
if not %ramd%==0 goto end
vol i: | find /i "i is ms-ramdrive"
if not errorlevel 1 set ramd=i:
if not %ramd%==0 goto end
vol j: | find /i "j is ms-ramdrive"
if not errorlevel 1 set ramd=j:
if not %ramd%==0 goto end
vol k: | find /i "k is ms-ramdrive"
if not errorlevel 1 set ramd=k:
if not %ramd%==0 goto end
vol l: | find /i "l is ms-ramdrive"
if not errorlevel 1 set ramd=l:
if not %ramd%==0 goto end
vol m: | find /i "m is ms-ramdrive"
if not errorlevel 1 set ramd=m:
if not %ramd%==0 goto end
vol n: | find /i "n is ms-ramdrive"
if not errorlevel 1 set ramd=n:
if not %ramd%==0 goto end
vol o: | find /i "o is ms-ramdrive"
if not errorlevel 1 set ramd=o:
if not %ramd%==0 goto end
vol p: | find /i "p is ms-ramdrive"
if not errorlevel 1 set ramd=p:
if not %ramd%==0 goto end
vol q: | find /i "q is ms-ramdrive"
if not errorlevel 1 set ramd=q:
if not %ramd%==0 goto end
vol r: | find /i "r is ms-ramdrive"
if not errorlevel 1 set ramd=r:
if not %ramd%==0 goto end
vol s: | find /i "s is ms-ramdrive"
if not errorlevel 1 set ramd=s:
if not %ramd%==0 goto end
vol t: | find /i "t is ms-ramdrive"
if not errorlevel 1 set ramd=t:
if not %ramd%==0 goto end
vol u: | find /i "u is ms-ramdrive"
if not errorlevel 1 set ramd=u:
if not %ramd%==0 goto end
vol v: | find /i "v is ms-ramdrive"
if not errorlevel 1 set ramd=v:
if not %ramd%==0 goto end
vol w: | find /i "w is ms-ramdrive"
if not errorlevel 1 set ramd=w:
if not %ramd%==0 goto end
vol x: | find /i "x is ms-ramdrive"
if not errorlevel 1 set ramd=x:
if not %ramd%==0 goto end
vol y: | find /i "y is ms-ramdrive"
if not errorlevel 1 set ramd=y:
if not %ramd%==0 goto end
vol z: | find /i "z is ms-ramdrive"
if not errorlevel 1 set ramd=z:
:end
echo disk ms-ramdrive is finded! ok.//////zunyi.
rem 本程序只可以在虚拟软盘启动是才正确。光盘启动不正确。错误在那里呢。我不知道。
以上用的是管道命令。for我试过,冲突的。但我想可以用shift配合for写。可以简化程序的。
附注:我的autoexec.bat 文件:
@echo off
set path=c:\;c:\dos;c:\dos\dosshell;c:\dos\pqmagic;d:\;d:\dos;d:\dos\dosshell;d:\dos\pqmagic;e:\;e:\dos;e:\dos\dosshell;e:\dos\pqmagic;f:\;f:\dos;f:\dos\dosshell;f:\dos\pqmagic;g:\;g:\dos;g:\dos\dosshell;g:\dos\pqmagic;h:\;h:\dos;h:\dos\dosshell;h:\dos\pqmagic;a:\;a:\dos;a:\dos\dosshell;a:\dos\pqmagic
call a:\framd.bat
goto %config%
:nomal
lh ctmouse
lh doskey
lh mscdex /d:mscd001
rem mscdex /d:mscd001 /l:z ---drivee no.1,driver letter Z
lh smartdrv
lh findcd
rem find cdrom
goto end
:myself
lh ctmouse
lh doskey
goto end
:end
echo ####################
echo Let's Go!ZHAO WD .ZUNYI.2009-2-1
说明:在windows下做双启动我个人觉得用镜像启动是比较方便的方法。
只需要如下几个文件就可以了
1*grub.exe,menu..lst,grldr,start.img(或start.ima),start.iso ,把这几个文件放到C盘根目录(其实可放到任何地方,只要把路径指明就可以了)
2*在windowns的boot.ini文件的最后添加一行:c:\grub.exe="我的dos“ 就可以了
3*现在是windows时代,dos最大的作用就两个:还原备份系统。还有一个就是操作模拟dos(命令提示符)。dos里面的有好多命令该舍弃了。如:country,killer,setver等等。所以我觉得围绕命令提示符学校古老的dos,应该是一个方向。
现在问题出来了:如果我是进入dos选用第一启动及用start.img一切正常。如果我选用地3种启动及用start.iso启动,这时的环境变量会是 啊a: 即set 回车显示 ramd=a: ,这就与实际的虚拟磁盘的盘符不符合了。但是如果我此时把程序framd.bat 复制到硬盘上,然后从任一个盘符下输入,比如d:>framd.bat 回车,则就又可以找到,准确的虚拟盘符。
这个问题谁能解决????????????????????????????
注明:menu.lst英语单词翻译
color---颜色,timeout---等待时间,defaul---默认, title---标题。
memdrive---内存盘, map---映射。mem---内存盘,chainloader---链式装载
root---根,vverity----校验,save---保存, falback ---备用,commandline---命令行,
,find---查找,root---引导,reboot---重引导,set---设置,guit---退出,
halt---停此,wait---等待
本文有104空间发布:http:\\104kj.net.cn
[ Last edited by 5yue5 on 2009-2-12 at 14:54 ]
|
|
2009-2-9 23:40 |
|
|
5yue5
初级用户
积分 69
发帖 34
注册 2009-2-8
状态 离线
|
『第
2 楼』:
希望能看到回答-
等了几天了。没人回答。晕了。
给我提供一个思路也可以呀。
|
|
2009-2-12 14:55 |
|
|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
|
2009-2-12 22:40 |
|
|
5yue5
初级用户
积分 69
发帖 34
注册 2009-2-8
状态 离线
|
『第
4 楼』:
谢谢3楼
xmsdsk 的确比ramdrive好用。但是ramdrive是ms的东西。所以我还是想用这个。
|
|
2009-2-12 22:52 |
|
|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
『第
5 楼』:
不明白,你的ramd初始也是0呀,怎么就得出a:了呢?
如果是在a:盘外可以正确的话,试试在前面先转到c:
找到ramd后,再转回a:看行不行。
|
精简
[你的+我的+他的]=>[大家的] 个人网志 |
|
2009-2-12 23:12 |
|
|
5yue5
初级用户
积分 69
发帖 34
注册 2009-2-8
状态 离线
|
『第
6 楼』:
谢谢5楼
我的ramd初值是0.那是这样的 set ramd=0 。是环境变量的初值。这个值定多少都没关系的。
操作环境变量,
就是控制内存,
控制内存就是控制计算机。
其实 思路就是把找到的虚拟磁盘符,借助于环境变量读到内存去。
程序 我在真实的计算机上 和虚拟机上都验证了。没问题的。
[ Last edited by 5yue5 on 2009-2-14 at 09:23 ]
|
|
2009-2-14 09:15 |
|
|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
『第
7 楼』:
就是在framd.bat里面
开头加上:C:
最后加上:A:
看看能不能解决问题,
|
精简
[你的+我的+他的]=>[大家的] 个人网志 |
|
2009-2-14 12:58 |
|