无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
151#
发表于 2011-1-20 13:57:35 | 显示全部楼层
我试了一下FOR都是正常的呀,你的WENV是什么版本的?
最后上传的版本是2010-11-29的
回复

使用道具 举报

152#
发表于 2011-1-20 15:04:03 | 显示全部楼层
虽然不能确定是什么原因,但不大可能是因为昨天的版本引起的。

调试时不要DEBUG OFF,否则看不出来是哪个命令失败了。
回复

使用道具 举报

153#
发表于 2011-1-20 16:20:06 | 显示全部楼层
我还没有用过SRSF6...

你还是先自己调试一下原因好了。
回复

使用道具 举报

154#
发表于 2011-1-20 17:15:53 | 显示全部楼层
先试一下这个看看是不是还会这样。

grldr.rar

126.02 KB, 下载次数: 14, 下载积分: 无忧币 -2

回复

使用道具 举报

155#
发表于 2011-1-20 17:59:55 | 显示全部楼层
不清楚,但是我调试的时候到这一步直接在命令行下测试是成功的。。

在你的批处理里面就什么都不输出,我重新写了一个批处理运行也是可以的。

你自己再试一下,如果找不到原因就换另一种写法看试试。也可以在这个语句里面加上一些调试的内容。看看

wenv for /f "eol=; tokens=1-2 delims==;" %i in ( (fd1)/TXT ) do (set a=%i ; check "$${a:0:4}"=="PCI\" ]]& set b=%j ]]] echo -n $ ]]] echo $${a}=$${b}) >> (fd1)/PCI
回复

使用道具 举报

156#
发表于 2011-1-20 22:53:17 | 显示全部楼层
试试新上传的WENV。
回复

使用道具 举报

157#
发表于 2011-1-21 13:58:26 | 显示全部楼层
再试试这个,,

现在回头再看WENV的代码,发现有好多地方不合理,,

以后有时间再重新整理吧、

wenv-2011-01-21.zip

14.82 KB, 下载次数: 18, 下载积分: 无忧币 -2

回复

使用道具 举报

158#
发表于 2011-1-21 15:13:58 | 显示全部楼层
新的WENV 还是会有449#的情况?

有continue命令的啊。

不过比较复杂的语句建议还是使用call一个批处理标签来调用,尽量不要使用复合语句(如果没有必要的话)

[ 本帖最后由 chenall 于 2011-1-21 15:16 编辑 ]
回复

使用道具 举报

159#
发表于 2011-1-21 16:50:34 | 显示全部楼层
???为什么"tokens=1-2 delims==;"不能运行?
回复

使用道具 举报

160#
发表于 2011-1-21 17:16:59 | 显示全部楼层
我试了正常,不过你里面的countinue写错了!!!!
回复

使用道具 举报

161#
发表于 2011-1-22 00:17:28 | 显示全部楼层
你还是只看到表面。。也许应该重新处理引号的问题。
看看这一句
STORAGE\Volume="Volume",{71A27CDD-812A-11D0-BEC7-08002BE2092F}

如果使用=;分隔得到了什么
STORAGE\Volume
"Volume",{71A27CDD-812A-11D0-BEC7-08002BE2092F}

自动去掉前后的引号之后
Volume",{71A27CDD-812A-11D0-BEC7-08002BE2092F}
回复

使用道具 举报

162#
发表于 2011-1-22 13:29:34 | 显示全部楼层
原帖由 zhaohj 于 2011-1-22 12:05 发表
是引号在作怪,也许默认去掉引号不是好方法,有些情况下应该保留引导。
有个开关象tuxw的WENV switch keep_quote=on还真有必要。

看一下这里:
http://bbs.znpc.net/viewthread.php?tid=6047&extra=page%3D1



WENV有提供一个config命令,可能你从来没有用过..

可以使用其它字符暂时代替引号的功能..

不过我昨天也已经上传了一个新版的WENV,如果引号不配对将不会被删除.这样就可以解决这个问题了..

但是不管如果设置,都是有可能出现未知的问题的,只是这种例子比较少而已.

只能由使用者自己控制.

如果你经常编写CMD的批处理,可能就会经常发现这样那样的问题,,,像
一个简单的判断.下面都是可能出现问题的.当abcd变量没有被设置,或者这个变量有包括一些特殊字符时.
if %abcd%==abcd echo bb

这时你只好换种方式解决问题.

难道你去怪CMD不支持这样的比较(好像tuxw版的比较就有支持这样的比较).
回复

使用道具 举报

163#
发表于 2011-1-22 23:38:16 | 显示全部楼层
原帖由 zxw 于 2011-1-22 23:24 发表
@chenall:
22日新版对clear命令有什么变动?
以前可以这样写:clear && echo ok



没有变动啊??难道又有什么问题?
回复

使用道具 举报

164#
发表于 2011-1-23 00:10:00 | 显示全部楼层
看来是一个bug,我查一下。重定向之后都算失败了,奇怪。
回复

使用道具 举报

165#
发表于 2011-1-23 00:52:52 | 显示全部楼层
Ok,
1.修正了重定向操作符的BUG。
2.为了方便使用,set /A 可以使用16进制数保存变量。set /a使用10进制保存。
3.修复goto命令的一些问题.在有一些情况下会用到。
现在可以
goto :aaaa || echo Err.
如果这个标签不存在不退出而是显示Err的值。
或如下是下面的语句.
goto :aaa && echo ccc
echo ccc永远都得不到执行,但有一个效果就是可以忽略goto的标签错误.
回复

使用道具 举报

166#
发表于 2011-1-23 14:07:39 | 显示全部楼层
什么功能啊,怎么碰巧。

嘿嘿,天意如此....

所以说好人有好报.
回复

使用道具 举报

167#
发表于 2011-1-23 15:38:05 | 显示全部楼层
这个因为1%在批处理中会被替换掉的。。。

第一个
set /a n=%s%%%12

在批处理中首先替换两个%为一个
就是下面的了。
set /a n=%s%%12
然后再替换%1为参数,如果参数为空就是下面的了,具体你可以随便加个参数试一下就知道了。
set /a n=%s%2
这样你应该明白为什么了吧。

解决方法也很简单,不要连写,在计算的时候使用空格分隔符号就可以了,下面就是你想要的结果。
set /a n=%s% % 12

在批处理中如果有用到%需要特别注意。。

至于为什么多写一个%就可以了,你自己根据上面的原理推一下就明白了。。

另外,如果你的计算符号之中需要使用像| ">>"之类的符号则必须连写,不要留空。否则会被当成的重定向符号。。

总之,就是需要灵活应用。

[ 本帖最后由 chenall 于 2011-1-23 15:41 编辑 ]
回复

使用道具 举报

168#
发表于 2011-1-23 22:24:52 | 显示全部楼层
嘿嘿,可以说目前GRUB4DOS已经强大了很多,之前许多无法实现的功能,现在可以很简单的实现了。。

有空可以多写几个批处理来造福一下大家。。

另外,我好像是逼着大家都用最新版了,囧,做一回坏人。
回复

使用道具 举报

169#
发表于 2011-1-23 22:39:25 | 显示全部楼层
这个无解,暂时还是find ls /boot/吧。

事实上ls /boot/列出1个文件或多个文件区别不是很大,当然了数量多的时候就不在此列。
回复

使用道具 举报

170#
发表于 2011-1-23 23:09:01 | 显示全部楼层
这个倒是没有注意,我看一下。

不过这个CHKPCI也是有必要改一下了,占用了6M-7M之间的内存,很容易发生冲突。我回头再研究一下。
回复

使用道具 举报

171#
发表于 2011-1-24 00:56:24 | 显示全部楼层
改的内容比较多,怕出问题.

先试一下,看看有没有其它问题。。

[ 本帖最后由 chenall 于 2011-1-24 01:14 编辑 ]

chkpci-2011-01-23.zip

2.55 KB, 下载次数: 28, 下载积分: 无忧币 -2

回复

使用道具 举报

172#
发表于 2011-1-24 11:31:10 | 显示全部楼层
之前的外部命令大多使用了6-7MB的内存作为缓存,有了MALLOC函数之后都是由malloc分配的。

字体是4-6MB之间。

如果你要使用临时内存,最好是30MB以上。

另外8-16M之间的内存也不可以随意使用。
回复

使用道具 举报

173#
发表于 2011-1-25 11:48:08 | 显示全部楼层
cat --length=0 (fd0)/CONFIG.SYS || echo fail && pause

好像是正常的啊。。

如果这个文件长度不为0就显示fail并暂停。。
回复

使用道具 举报

174#
发表于 2011-1-25 12:13:08 | 显示全部楼层
你用命令行手工输入以上命令,截个图上来。。。。

也许是手误。。
回复

使用道具 举报

175#
发表于 2011-1-25 20:21:55 | 显示全部楼层
明天可能会更新一下

添加 if exist命令.比较实用,使用的代码也不多,太概就10几行的样子.

可以判断变量或文件名是否存在

比如:如果变量aa已经定义就显示该变量
if exist aa echo %aa%

如果/AA.TXT文件存在就显示这个文件..
if exist /aa.txt cat /aa.txt

目前关键是这个判断文件存在要使用哪一种方式,如果使用find一样的就很简单,两行条码搞定.open再close就可以了.完美一点就要使用ls和open相结合的方式,但是需要比较长的代码.

先看一下吧,实在不行就先简单一点,以后再考虑改进.

[ 本帖最后由 chenall 于 2011-1-25 20:23 编辑 ]
回复

使用道具 举报

176#
发表于 2011-1-25 21:30:00 | 显示全部楼层
你需要确定到底是哪个版本引起的?
也许可以抽空查出什么原因来.对于这一块的内容我没有动过.也许要等到不点看看再说了.

这个也许和主板有关系..
回复

使用道具 举报

177#
发表于 2011-1-26 10:51:03 | 显示全部楼层
原帖由 zxw 于 2011-1-26 10:35 发表

还是建议用(xx)来表示,对于一般用户来讲更直观。


我前面指的(xx,yy)或(xx)都是数值的。暂时不想改动,比较麻烦,而且没有这个必要。

需要的话你可以自己用批处理进行转换。
回复

使用道具 举报

178#
发表于 2011-1-26 11:14:37 | 显示全部楼层
嗯,用批处理处理比较简单。

因为新版的bd不再接受回车符,所以可以直接用以下命令取得输出的第一行。
find | set bd=

root | call :_chdis bd=
exit
:_chdis
set %1=%2
exit

[ 本帖最后由 chenall 于 2011-1-26 11:20 编辑 ]
回复

使用道具 举报

179#
发表于 2011-1-27 09:29:52 | 显示全部楼层
原帖由 hhh333 于 2011-1-27 09:18 发表
检测已知位置的文件是否存在,用if exist确实比较方便了,那if not exist如果不支持可能也不行。


晕,,我没有看明白。。
回复

使用道具 举报

180#
发表于 2011-1-27 13:07:38 | 显示全部楼层
原帖由 sratlf 于 2011-1-27 12:02 发表
@ chenall

halt命令发现个问题  使用 halt --asdf  也可以关机  还是本来就不考虑不识别的参数

还有现在halt除了 --no-apm 和 --no-acpi 参数还有其他的吗


错误的参数将被忽略。。

--force-sci
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-5 07:11

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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