无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: zhaohj

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
发表于 2010-12-11 15:18:05 | 显示全部楼层
原帖由 chenall 于 2010-12-10 12:09 发表



1.这个我没有改动,可能是由于LZMA补丁的原因吧..
大于8M的镜像才会显示进度,GZ文件不显示进度(不知之前的版本是怎样的,我稍后试一下)
LZMA会有一个进度.

2.nd ->Network Drive (没有使用,是之前的遗 ...



谢谢chenall 老师的解答!

1、关于GZ文件不显示进度的问题,之前的版本是可以正常显示进度的,支持LZMA后的版本不能显示GZ文件进度。

看你这里是不是用write 0x82a4 2可以让GZ文件显示进度了啊?
这个是加在菜单开头这里:
default 4
timeout 5
还是加在菜单项里啊?
title 05.boot [ 0PE.ISO ]
write 0x82a4 2
find --set-root --ignore-floppies /BOOT/0PE.ISO
map --mem /BOOT/0PE.ISO (0xff)
map --hook
chainloader (0xff)
boot

0x8284的值的bit2如果为1则显示解压进度,否则不显示,默认不显示.
可以write 0x82a4 2来让它显示进度,
注:显示进度对文件读取的速度有影响.


2、grub4dos-0.4.5b-2010-12-07-test.zip新版的在用find新增参数--devices=[DEVICES],指定要查找的设备.我的菜单是: find --devices=uhcp  ,这时时不能找到硬盘隐藏分区里的文件,文件放到可见分区可以正常找到,用find --set-root --ignore-floppies 可以正常找到硬盘隐藏分区里的文件。
试试
find --devices=h

这个我试了也是不行。
我的菜单没有加了其它的参数
我的菜单如下:

title 05.boot [ 0PE.ISO ]
find --devices=uhcp /BOOT/0PE.ISO
map --mem /BOOT/0PE.ISO (0xff)
map --hook
chainloader (0xff)
boot

改成下面这个也不行:
title 05.boot [ 0PE.ISO ]
find --devices=h /BOOT/0PE.ISO
map --mem /BOOT/0PE.ISO (0xff)
map --hook
chainloader (0xff)
boot
chenall 老师给看看是不是find方面的bug啊?
回复

使用道具 举报

发表于 2010-12-11 16:20:40 | 显示全部楼层
是否可以直接加载不同版本的同名模?

比如工具1用到了WENV的某个旧版,工具2用到WENV的另一个版本,但对合盘者来说,并不了解工具x所用到的版本,是否可以直接configfile两个工具中的菜单文件?
回复

使用道具 举报

发表于 2010-12-11 17:08:13 | 显示全部楼层
原帖由 thttht 于 2010-12-11 15:18 发表



谢谢chenall 老师的解答!

1、关于GZ文件不显示进度的问题,之前的版本是可以正常显示进度的,支持LZMA后的版本不能显示GZ文件进度。

看你这里是不是用write 0x82a4 2可以让GZ文件显示进度了啊?
...


1.是的.新的版本有支持进度显示,默认不显示.要显示的自己在菜单头部加一条命令
write 0x82a4 2
注: 需要先判断GRUB4DOS版本是20101210之后的版本才可以用这个.
checkrange 20101210:-1 read 0x8278 && write 0x82a4 2

2.
少了--set-root,所以当然失败了.--set-root是查找并设置为root,否则只是查找.

[ 本帖最后由 chenall 于 2010-12-11 17:15 编辑 ]
回复

使用道具 举报

发表于 2010-12-11 17:12:16 | 显示全部楼层
原帖由 tuxw 于 2010-12-11 16:20 发表
是否可以直接加载不同版本的同名模?

比如工具1用到了WENV的某个旧版,工具2用到WENV的另一个版本,但对合盘者来说,并不了解工具x所用到的版本,是否可以直接configfile两个工具中的菜单文件?


必须不同名字.同名的不再加载.

2010-12-11
1.完善批处理脚本参数的支持(同CMD下的批处理用法一样).
2.可以在菜单中使用goto命令(即跳到某个菜单项目).
3.delmod 添加参数 "-l" 用于显示已经加载的模块名.如果后面还有参数则是判断该模块是否加载.
回复

使用道具 举报

发表于 2010-12-11 22:54:07 | 显示全部楼层

回复 #154 chenall 的帖子

C大  1211版是不是什么地方改动了  

我在这个帖子里贴的那个run  1211版执行WENV错误  是WENV check %1==" "一句不能执行  1210版就没有问题
回复

使用道具 举报

 楼主| 发表于 2010-12-11 23:13:51 | 显示全部楼层
2.可以在菜单中使用goto命令(即跳到某个菜单项目).
---------
是指批处理也可以有菜单了吗?
回复

使用道具 举报

发表于 2010-12-11 23:23:09 | 显示全部楼层
原帖由 zhaohj 于 2010-12-11 23:13 发表
2.可以在菜单中使用goto命令(即跳到某个菜单项目).
---------
是指批处理也可以有菜单了吗?


不是.这个相当于之前的外部命令goto的功能,只是内置了.
回复

使用道具 举报

发表于 2010-12-11 23:29:30 | 显示全部楼层
原帖由 sratlf 于 2010-12-11 22:54 发表
C大  1211版是不是什么地方改动了  

我在这个帖子里贴的那个run  1211版执行WENV错误  是WENV check %1==" "一句不能执行  1210版就没有问题


已经修正重新上传.麻烦再试一下.
grub4dos-0.4.5a-2010-12-11-fix.zip
回复

使用道具 举报

 楼主| 发表于 2010-12-11 23:38:11 | 显示全部楼层
什么时候支持在菜单文件中(非批处理)支持goto :label
有时候在菜单文件中想跳转,不得不用title,但运行时屏幕上出现一条框实在不爽。

如果把菜单文件(没有菜单的LST文件)变成批处理,因为批处理运行相对要求较严,一步出错会退出。

[ 本帖最后由 zhaohj 于 2010-12-11 23:47 编辑 ]
回复

使用道具 举报

发表于 2010-12-12 10:57:11 | 显示全部楼层
原帖由 chenall 于 2010-12-11 23:29 发表


已经修正重新上传.麻烦再试一下.
grub4dos-0.4.5a-2010-12-11-fix.zip


这次正常了  谢谢  还要问下C大  批处理中类似于 WENV check %1==" " call goto input不能执行  不会跳到input段  应该怎么改
回复

使用道具 举报

发表于 2010-12-12 11:01:40 | 显示全部楼层
原帖由 sratlf 于 2010-12-12 10:57 发表


这次正常了  谢谢  还要问下C大  批处理中类似于 WENV check %1==" " call goto input不能执行  不会跳到input段  应该怎么改


WENV check %1==" " && goto input
回复

使用道具 举报

发表于 2010-12-12 11:03:31 | 显示全部楼层
原帖由 zhaohj 于 2010-12-11 23:38 发表
什么时候支持在菜单文件中(非批处理)支持goto :label
有时候在菜单文件中想跳转,不得不用title,但运行时屏幕上出现一条框实在不爽。

如果把菜单文件(没有菜单的LST文件)变成批处理,因为批处理运行相 ...


汗,为什么还要纠结于老日历呢..用批处理碰到错误会退出,菜单也是一样的啊.

放弃以前的那些老思想,试试新的思路,也许你会发现一切将会变得简单起来.
回复

使用道具 举报

 楼主| 发表于 2010-12-12 12:18:47 | 显示全部楼层
批处理不支持WENV FOR或与批处理支持参数有冲突?见
http://bbs.wuyou.net/forum.php?m ... page=101#pid2109181
回复

使用道具 举报

发表于 2010-12-12 15:25:40 | 显示全部楼层
谢谢你报告.
如果没有问题的话,晚上8点之前会上传一个修正版.
回复

使用道具 举报

发表于 2010-12-12 22:30:59 | 显示全部楼层
又更新了一下,用模块化的方式重写了insmod/delmod的代码.

之前的会加载失败.
回复

使用道具 举报

发表于 2010-12-13 14:22:59 | 显示全部楼层
批处理里面,会将WENV字符串截取 ${VAR%%string} 变为 ${VAR%string},两个%变为一个了
回复

使用道具 举报

发表于 2010-12-13 14:32:13 | 显示全部楼层
新版的grldr 的find命令出现这样的情况是不是正常的
QQ截图未命名.jpg

[ 本帖最后由 jianliulin 于 2010-12-13 14:33 编辑 ]
回复

使用道具 举报

发表于 2010-12-13 14:39:34 | 显示全部楼层
原帖由 tuxw 于 2010-12-13 14:22 发表
批处理里面,会将WENV字符串截取 ${VAR%%string} 变为 ${VAR%string},两个%变为一个了


这个和批处理的%符号有冲突..要在批处理中使用可以用
${VAR%%%string}  或
保险一点用 ${VAR%%%%string}

两个%%会处理成一个%,只有一个%是不处理的,但注意如果一个%后面跟的是数字那这个符号和数字都会被替换掉.
回复

使用道具 举报

发表于 2010-12-13 14:46:19 | 显示全部楼层
应该判断一下,两个%%后面跟的是0-9才作参数替换处理。则一般的替换没有问题,只有替换数字时,才需要多写几个%
回复

使用道具 举报

发表于 2010-12-13 14:57:15 | 显示全部楼层
原帖由 jianliulin 于 2010-12-13 14:32 发表
新版的grldr 的find命令出现这样的情况是不是正常的
107879


这个应该是从ud启动的吧..好像从UD启动第一条命令会出现这个,以后的就不会了,我没有找到在哪里显示的..
回复

使用道具 举报

发表于 2010-12-13 15:02:27 | 显示全部楼层
原帖由 tuxw 于 2010-12-13 14:46 发表
应该判断一下,两个%%后面跟的是0-9才作参数替换处理。则一般的替换没有问题,只有替换数字时,才需要多写几个%


遵循原来的语法,保持一致,这样才不会看着很迷糊.

我想DOS的批处理应该也是这样处理的.

为了保险起见还是要批处理编写人员自己处理这些问题.
不能指望程序全自动处理.

其实这也是一个良好的编程习惯.

在使用增强版WENV时,我发现如下语句
wenv check  %1==" "

当参数为空时.
结果竟然是成功的,这就让我很迷惑.在标准的语法中这是非法的.

我的原则是尽量使用标准的语法.

[ 本帖最后由 chenall 于 2010-12-13 15:07 编辑 ]
回复

使用道具 举报

发表于 2010-12-13 15:22:54 | 显示全部楼层
DOS确实是这样处理的,但明显是一个BUG。比如语句 ehco %% 显然想输出两个%,但它会处理成一个。
从CMD的帮助中也可看出是设计目标不是这样的,因为从来没有哪个帮助里说了批处理需要双写%,只有FOR命令的帮助里才提到“在批处理中使用FOR命令时,指定变量请使用%%VARIABLE ”。
继承用法习惯是重要的,但没有必要固执,非得将它的BUG也承继下来。

WENV check %1==" ",%1为空返回真是BUG。我看到sratlf这样用时,我当时还感到非常奇怪,这样怎么能成功?

这个跟语法没有关系,设计目标本来是这样的:
WENV chekc %1==""  返回真
wENV check %1==" " 返回假,现在这个出BUG了(左右交换则没有这个问题,显然是处理右边引号时出错了)
回复

使用道具 举报

发表于 2010-12-13 15:37:11 | 显示全部楼层
原帖由 tuxw 于 2010-12-13 15:22 发表
DOS确实是这样处理的,但明显是一个BUG。比如语句 ehco %% 显然想输出两个%,但它会处理成一个。
从CMD的帮助中也可看出是设计目标不是这样的,因为从来没有哪个帮助里说了批处理需要双写%,只有FOR命令的帮助 ...


根据我对批处理的理解,我不认为这是BUG..因为本来就是应该这样处理的.
回复

使用道具 举报

发表于 2010-12-13 16:05:43 | 显示全部楼层
原帖由 chenall 于 2010-12-13 15:37 发表

根据我对批处理的理解,我不认为这是BUG..因为本来就是应该这样处理的.

同意这个观点。
回复

使用道具 举报

发表于 2010-12-13 16:42:13 | 显示全部楼层
原帖由 chenall 于 2010-12-13 15:37 发表


根据我对批处理的理解,我不认为这是BUG..因为本来就是应该这样处理的.


这个就叫习非成是,习惯了这个用法,它就不是BUG了。
跟老百姓一年一年被加税,几代人都这样交习惯了,觉得本来就应该是这样的一个道理。
回复

使用道具 举报

发表于 2010-12-13 17:07:47 | 显示全部楼层
原帖由 tuxw 于 2010-12-13 16:42 发表


这个就叫习非成是,习惯了这个用法,它就不是BUG了。
跟老百姓一年一年被加税,几代人都这样交习惯了,觉得本来就应该是这样的一个道理。


呵呵,每个人看待事情的方法不一样.
回复

使用道具 举报

发表于 2010-12-13 17:12:08 | 显示全部楼层
先上传一下测试.

修改优化了一下.
给批处理添加了一个exit命令.

可以在批处理中使用exit命令退出.

exit命令也可以加参数,
比如
exit 1
会返回一个errnum值为1001.
exit 2
返回
errnum 为1002.

这样可以方便处理.
需要正常退出就直接exit,否则就加一个数字.

现在goto/call/exit 都是属于内部命令,而不像以前那样是伪命令.

goto只能在批处理和菜单中使用.
call/exit 只能在批处理中使用.

[ 本帖最后由 chenall 于 2010-12-13 20:13 编辑 ]
回复

使用道具 举报

发表于 2010-12-14 00:23:10 | 显示全部楼层
0PEv1.2.4(2010-12-11)用12-11fix正常,换12-13的grldr后,出主菜单前VMware崩溃。
语法变了?
回复

使用道具 举报

发表于 2010-12-14 00:31:30 | 显示全部楼层
原帖由 pseudo 于 2010-12-14 00:23 发表
0PEv1.2.4(2010-12-11)用12-11fix正常,换12-13的grldr后,出主菜单前VMware崩溃。
语法变了?


没变啊.你再试试12-12的看看有没有问题.难道一不小心又搞出BUG来了..
回复

使用道具 举报

发表于 2010-12-14 00:41:03 | 显示全部楼层

回复 #179 chenall 的帖子

用0PE实机测试12-12的没有问题。12-13在出主菜单前重启。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-19 09:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表