thttht 发表于 2010-12-11 15:18:05

原帖由 chenall 于 2010-12-10 12:09 发表 http://bbs.wuyou.net/images/common/back.gif



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=,指定要查找的设备.我的菜单是: 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啊?

tuxw 发表于 2010-12-11 16:20:40

是否可以直接加载不同版本的同名模?

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

chenall 发表于 2010-12-11 17:08:13

原帖由 thttht 于 2010-12-11 15:18 发表 http://bbs.wuyou.net/images/common/back.gif



谢谢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 编辑 ]

chenall 发表于 2010-12-11 17:12:16

原帖由 tuxw 于 2010-12-11 16:20 发表 http://bbs.wuyou.net/images/common/back.gif
是否可以直接加载不同版本的同名模?

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

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

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

sratlf 发表于 2010-12-11 22:54:07

回复 #154 chenall 的帖子

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

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

zhaohj 发表于 2010-12-11 23:13:51

2.可以在菜单中使用goto命令(即跳到某个菜单项目).
---------
是指批处理也可以有菜单了吗?

chenall 发表于 2010-12-11 23:23:09

原帖由 zhaohj 于 2010-12-11 23:13 发表 http://bbs.wuyou.net/images/common/back.gif
2.可以在菜单中使用goto命令(即跳到某个菜单项目).
---------
是指批处理也可以有菜单了吗?

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

chenall 发表于 2010-12-11 23:29:30

原帖由 sratlf 于 2010-12-11 22:54 发表 http://bbs.wuyou.net/images/common/back.gif
C大1211版是不是什么地方改动了

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

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

zhaohj 发表于 2010-12-11 23:38:11

什么时候支持在菜单文件中(非批处理)支持goto :label
有时候在菜单文件中想跳转,不得不用title,但运行时屏幕上出现一条框实在不爽。

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

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

sratlf 发表于 2010-12-12 10:57:11

原帖由 chenall 于 2010-12-11 23:29 发表 http://bbs.wuyou.net/images/common/back.gif


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

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

chenall 发表于 2010-12-12 11:01:40

原帖由 sratlf 于 2010-12-12 10:57 发表 http://bbs.wuyou.net/images/common/back.gif


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

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

chenall 发表于 2010-12-12 11:03:31

原帖由 zhaohj 于 2010-12-11 23:38 发表 http://bbs.wuyou.net/images/common/back.gif
什么时候支持在菜单文件中(非批处理)支持goto :label
有时候在菜单文件中想跳转,不得不用title,但运行时屏幕上出现一条框实在不爽。

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

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

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

zhaohj 发表于 2010-12-12 12:18:47

批处理不支持WENV FOR或与批处理支持参数有冲突?见
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=182254&page=101#pid2109181

chenall 发表于 2010-12-12 15:25:40

谢谢你报告.
如果没有问题的话,晚上8点之前会上传一个修正版.

chenall 发表于 2010-12-12 22:30:59

又更新了一下,用模块化的方式重写了insmod/delmod的代码.

之前的会加载失败.

tuxw 发表于 2010-12-13 14:22:59

批处理里面,会将WENV字符串截取 ${VAR%%string} 变为 ${VAR%string},两个%变为一个了

jianliulin 发表于 2010-12-13 14:32:13

新版的grldr 的find命令出现这样的情况是不是正常的


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

chenall 发表于 2010-12-13 14:39:34

原帖由 tuxw 于 2010-12-13 14:22 发表 http://bbs.wuyou.net/images/common/back.gif
批处理里面,会将WENV字符串截取 ${VAR%%string} 变为 ${VAR%string},两个%变为一个了

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

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

tuxw 发表于 2010-12-13 14:46:19

应该判断一下,两个%%后面跟的是0-9才作参数替换处理。则一般的替换没有问题,只有替换数字时,才需要多写几个%

chenall 发表于 2010-12-13 14:57:15

原帖由 jianliulin 于 2010-12-13 14:32 发表 http://bbs.wuyou.net/images/common/back.gif
新版的grldr 的find命令出现这样的情况是不是正常的
107879

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

chenall 发表于 2010-12-13 15:02:27

原帖由 tuxw 于 2010-12-13 14:46 发表 http://bbs.wuyou.net/images/common/back.gif
应该判断一下,两个%%后面跟的是0-9才作参数替换处理。则一般的替换没有问题,只有替换数字时,才需要多写几个%

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

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

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

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

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

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

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

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

tuxw 发表于 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了(左右交换则没有这个问题,显然是处理右边引号时出错了)

chenall 发表于 2010-12-13 15:37:11

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

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

zxw 发表于 2010-12-13 16:05:43

原帖由 chenall 于 2010-12-13 15:37 发表 http://bbs.wuyou.net/images/common/back.gif

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

tuxw 发表于 2010-12-13 16:42:13

原帖由 chenall 于 2010-12-13 15:37 发表 http://bbs.wuyou.net/images/common/back.gif


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

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

chenall 发表于 2010-12-13 17:07:47

原帖由 tuxw 于 2010-12-13 16:42 发表 http://bbs.wuyou.net/images/common/back.gif


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

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

chenall 发表于 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 编辑 ]

pseudo 发表于 2010-12-14 00:23:10

0PEv1.2.4(2010-12-11)用12-11fix正常,换12-13的grldr后,出主菜单前VMware崩溃。
语法变了?

chenall 发表于 2010-12-14 00:31:30

原帖由 pseudo 于 2010-12-14 00:23 发表 http://bbs.wuyou.net/images/common/back.gif
0PEv1.2.4(2010-12-11)用12-11fix正常,换12-13的grldr后,出主菜单前VMware崩溃。
语法变了?

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

zxw 发表于 2010-12-14 00:41:03

回复 #179 chenall 的帖子

用0PE实机测试12-12的没有问题。12-13在出主菜单前重启。
页: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15
查看完整版本: GRUB4DOS更新建议、bug反馈专帖