众所周知,BCDW有传递参数的功能,遗憾的是,只能用于光盘/ISO启动。
grub4dos作为一个启动管理器,功能强大,但可惜没有传递参数的功能。
时空论坛看到有人提出了此问题,zw2312914给出了解决的思路与办法。
感觉不错,转贴分享之。
原帖链接:
http://bbs.znpc.net/viewthread.php?tid=5322&extra=page%3D1
Public:
就是能否在 menu.lst 文件里面设置怎样的路径链接,来直接运行 .img 里面的批处理程序吗
比如说 我有个dos.img 里面有 PQ.bat来运行魔术分区软件,DM.bat来运行DM程序,gho.bat来运行Ghost自动备份
C盘的操作等等。
我想在menu.lst 里面编辑一个菜单项,第1项加载PQ.bat,第2项加载DM.bat,第3项加载gho.bat
,但是这3个bat文件又都是同在一个dos.img里面的,(如果在各自不同的img文件里面的当然可以实现),请问一
下这个有办法解决吗??
-------------------------------------------
zw2312914:
第一个问题的实质是grub4和dos(操作系统)之间的参数传递的问题。
思考了一个方法,核心就是使用grub4目前唯一一个在文件系统内的写操作命令 savedefault 。然后在dos(操作系统)下对savedefault命令所保存的值进行判断,最后调用相应的批处理。
这个方法应该比写内存然后引导到dos(操作系统),更简洁和合理,而且也许扩展应用较大。
以楼主问题为例:
1.复制grub4dos下载包中的default文件到镜像中(镜像名是dos.img为例),并把default更名为default.txt。
2.在menu.lst中参照以下菜单项改写
title PQ.bat运行魔术分区软件
map --mem /dos.img (fd0)
map --hook
chainloader (fd0)+1
root (fd0)
default (fd0)/default.txt
savedefault 11
boot
title DM.bat来运行DM程序
map --mem /dos.img (fd0)
map --hook
chainloader (fd0)+1
root (fd0)
default (fd0)/default.txt
savedefault 22
boot
title 加载gho.bat
map --mem /dos.img (fd0)
map --hook
chainloader (fd0)+1
root (fd0)
default (fd0)/default.txt
savedefault 33
boot
3.在dos中增加一个bat,用来判断default.txt的开头字符,并根据这个字符值,调用需要加载的bat。
例如,choose.bat:
@echo off
find "11" a:\defaut.txt > nul
if not errorlevel 1 a:\PM.bat
find "22" a:\defaut.txt > nul
if not errorlevel 1 a:\DM.bat
find "33" a:\defaut.txt > nul
if not errorlevel 1 a:\GHOST.bat
(需注意:由defualt文件改名而来的default.txt,由于其中已有2 0 4 8 几个数字,所以savedefault时应避免与它相同。实际上只要保证写入前后deualt.txt文件的大小不变,即2048字节,可以自己建一个2048字节的空内容文本文件作为defualt.txt,不过不推荐这样做)
dos下准确和简洁的判断和处理,还是请教批处理高手吧。
[
本帖最后由 lianjiang 于 2008-11-18 18:37 编辑 ]