无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
451#
 楼主| 发表于 2011-1-21 15:07:30 | 只看该作者
还是没有改观,等你有空再改吧。

有记得有次你加了loop(continue)这样的命令,忘了,是否下次加上?!
回复

使用道具 举报

452#
发表于 2011-1-21 15:13:58 | 只看该作者
新的WENV 还是会有449#的情况?

有continue命令的啊。

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

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

使用道具 举报

453#
 楼主| 发表于 2011-1-21 15:59:46 | 只看该作者
wenv for /f "eol=; tokens=1 delims=;" %i in ( (fd1)/SIF )  do (set a=%i ; check $${a:0:4}==PCI\ echo $${a})
出错
------------改成
wenv for /f "eol=; tokens=1 delims=;" %i in ( (fd1)/SIF )  do (set a=%i ; check $${a:0:4}==PCI\ echo %i)
能运行,但发觉输出结果少很多

[ 本帖最后由 zhaohj 于 2011-1-21 16:04 编辑 ]

Snap1.jpg (37.51 KB, 下载次数: 96)

Snap1.jpg

Snap2.jpg (361.69 KB, 下载次数: 111)

Snap2.jpg
回复

使用道具 举报

454#
 楼主| 发表于 2011-1-21 16:16:58 | 只看该作者
set a
变量值不对
引号问题导致
改成"tokens=1-2 delims==;"又无法运行

[ 本帖最后由 zhaohj 于 2011-1-21 16:25 编辑 ]

Snap3.jpg (45.5 KB, 下载次数: 92)

Snap3.jpg

Snap1.jpg (13.3 KB, 下载次数: 101)

Snap1.jpg
回复

使用道具 举报

455#
发表于 2011-1-21 16:50:34 | 只看该作者
???为什么"tokens=1-2 delims==;"不能运行?
回复

使用道具 举报

456#
 楼主| 发表于 2011-1-21 17:06:46 | 只看该作者
原帖由 chenall 于 2011-1-21 16:50 发表
???为什么"tokens=1-2 delims==;"不能运行?


我也感到很奇怪啊?!
下面你测试一下

test.rar

9.12 KB, 下载次数: 17, 下载积分: 无忧币 -2

回复

使用道具 举报

457#
发表于 2011-1-21 17:16:59 | 只看该作者
我试了正常,不过你里面的countinue写错了!!!!
回复

使用道具 举报

458#
 楼主| 发表于 2011-1-21 17:53:19 | 只看该作者
原帖由 chenall 于 2011-1-21 17:16 发表
我试了正常,不过你里面的countinue写错了!!!!


是的,加上 "delims==,;“就可以了,这个“,"逗号很关键,不然还会出错。

想不到这个逗号在作怪!

[ 本帖最后由 zhaohj 于 2011-1-21 17:57 编辑 ]
回复

使用道具 举报

459#
发表于 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}
回复

使用道具 举报

460#
 楼主| 发表于 2011-1-22 12:05:17 | 只看该作者
是引号在作怪,也许默认去掉引号不是好方法,有些情况下应该保留引导。
有个开关象tuxw的WENV switch keep_quote=on还真有必要。

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

[ 本帖最后由 zhaohj 于 2011-1-22 12:07 编辑 ]
回复

使用道具 举报

461#
发表于 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版的比较就有支持这样的比较).
回复

使用道具 举报

462#
 楼主| 发表于 2011-1-22 17:10:23 | 只看该作者
“如果引号不配对将不会被删除”,测试了一下,很好!
将大大减少出错概率!
回复

使用道具 举报

463#
发表于 2011-1-22 23:24:54 | 只看该作者
@chenall:
22日新版对clear命令有什么变动?
以前可以这样写:clear && echo ok
回复

使用道具 举报

464#
发表于 2011-1-22 23:38:16 | 只看该作者
原帖由 zxw 于 2011-1-22 23:24 发表
@chenall:
22日新版对clear命令有什么变动?
以前可以这样写:clear && echo ok



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

使用道具 举报

465#
发表于 2011-1-22 23:54:32 | 只看该作者

回复 #464 chenall 的帖子

不好意思,粗心了。应该是>的变动。


回复

使用道具 举报

466#
发表于 2011-1-23 00:10:00 | 只看该作者
看来是一个bug,我查一下。重定向之后都算失败了,奇怪。
回复

使用道具 举报

467#
发表于 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的标签错误.
回复

使用道具 举报

468#
发表于 2011-1-23 00:56:59 | 只看该作者

回复 #467 chenall 的帖子

谢谢,chenall大新增的功能正是我迫切需要的。
^_^好象是为我那个脚本定制的。^_^

[ 本帖最后由 zxw 于 2011-1-23 01:00 编辑 ]
回复

使用道具 举报

469#
发表于 2011-1-23 14:07:39 | 只看该作者
什么功能啊,怎么碰巧。

嘿嘿,天意如此....

所以说好人有好报.
回复

使用道具 举报

470#
发表于 2011-1-23 14:56:00 | 只看该作者
@chenall:
请看看这个:






晕,再多写一个%就正常了?


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

使用道具 举报

471#
发表于 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 编辑 ]
回复

使用道具 举报

472#
发表于 2011-1-23 16:54:43 | 只看该作者

回复 #471 chenall 的帖子

谢谢指点,知道了。
原只知道在批处理中首先替换两个%为一个。其他的替换不明。
回复

使用道具 举报

473#
发表于 2011-1-23 22:11:07 | 只看该作者

回复 #469 chenall 的帖子

写run脚本以来,grub4dos新增功能基本都用上了,恰恰都是我想优化脚本需要的:内置变量、shift、set功能增强。
感谢chenall大大。^_^写这个脚本,我自己也学到了很多。

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

使用道具 举报

474#
发表于 2011-1-23 22:24:52 | 只看该作者
嘿嘿,可以说目前GRUB4DOS已经强大了很多,之前许多无法实现的功能,现在可以很简单的实现了。。

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

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

使用道具 举报

475#
发表于 2011-1-23 22:34:07 | 只看该作者

回复 #474 chenall 的帖子

呵呵,这种坏人大家都喜欢!^_^

对了,对ud情形的虚拟目录的find,是否考虑增强一下,目前虽然可以用find ls /boot/ 之类的组合命令来曲线解决,但总觉不爽。或者给ls加一个参数,有时会用得到。如判断该虚拟目录是否存在,不需要显示,也不需要将虚拟目录下所有文件都列出来,列出第一个即可。
回复

使用道具 举报

476#
发表于 2011-1-23 22:39:25 | 只看该作者
这个无解,暂时还是find ls /boot/吧。

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

使用道具 举报

477#
 楼主| 发表于 2011-1-23 22:58:20 | 只看该作者
请C大修正chkpci不识别第一条id的bug

Snap1.jpg (65.97 KB, 下载次数: 110)

Snap1.jpg
回复

使用道具 举报

478#
发表于 2011-1-23 23:09:01 | 只看该作者
这个倒是没有注意,我看一下。

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

使用道具 举报

479#
发表于 2011-1-24 00:56:24 | 只看该作者
改的内容比较多,怕出问题.

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

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

chkpci-2011-01-23.zip

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

回复

使用道具 举报

480#
 楼主| 发表于 2011-1-24 08:49:49 | 只看该作者
初步测试正常,C大最好把几个外部命令使用的内存块说明一下。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-9 04:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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