无忧启动论坛

标题: 请教GRUB4DOS的两个问题 [打印本页]

作者: qj_tzy    时间: 2013-12-5 11:47
标题: 请教GRUB4DOS的两个问题
本帖最后由 qj_tzy 于 2013-12-5 15:22 编辑

请教GRUB4DOS的两个问题

1.把(hd-1)的值赋给某个内存变量,并保存在一个文件中
若有两个硬盘、且插入U盘的硬盘下,(hd)的值应为(hd3),(hd-1)的值应为(hd2),想把(hd-1)的值(hd2)赋给一个内存变量,并保存在一个文件中,GRUB4DOS的命令如何写,如:

set dsk_no=(hd-1)  ?
echo %dsk_no% > dsk_no.flg

2.用一个grub4dos批命令启动一个iso文件,其批命令如下:

!BAT
set /l isoname=%1
#接受menu.lst传给批命令的iso文件名称,如win7pe.iso,该文件在/boot/img_bin/目录下

set pathimg=/boot/img_bin/
pause --wait=0 Please Wait....
map --mem %pathimg%%isoname% (0xFF)
map --hook
chainloader (0xFF)

:eof
exit

但该批命令把串%pathimg%%isoname%显示为/boot/img_bin/isoname%,即两个变量以%分隔排在一起时,后面一个变量的值未替换出来,该如何处理,才能得到想要的结果
作者: sratlf    时间: 2013-12-5 12:56
1,
  1. calc *0x475&0xff || echo no disk
  2. calc %@retval%-1
  3. echo (hd%@retval%) > dsk_no.flg
复制代码


2,批处理下连续两个%%会处理为一个%  所以改成下面这样就行了

map --mem %pathimg%%%isoname% (0xff)
作者: qj_tzy    时间: 2013-12-5 13:25
sratlf 发表于 2013-12-5 12:56
1,

谢谢,但我对下段没理解,在您编写的grub4dos新版本帮忙文档中,我好像没找到相关说明,能否解释一下:
01.calc *0x475&0xff

02.calc %@retval%-1

03.echo (hd%@retval%)
作者: sratlf    时间: 2013-12-5 14:48
qj_tzy 发表于 2013-12-5 13:25
谢谢,但我对下段没理解,在您编写的grub4dos新版本帮忙文档中,我好像没找到相关说明,能否解释一下:
...

第一句是获取硬盘数量  0x475处值的最后两位就是  第二句是确定最后一块硬盘的值   第三句就是输出结果

比如两块硬盘的  第一行命令会得到2  第二行命令得到1  那hd-1就是hd1
作者: qj_tzy    时间: 2013-12-5 15:22
谢谢,在您的指导下,此问题已解决!




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3