无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
无忧启动论坛唯一网址:bbs.wuyou.net系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
楼主: zhaohj

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
 楼主| 发表于 2010-11-6 16:14:26 | 显示全部楼层
原帖由 tuxw 于 2010-11-6 15:59 发表
可以先查找 [aaaa] 再查找 [
如果  不可预知,用 INIFILE 的方式更不可能实现,INI 是必须要知道段名和变量名才可以操作的


inifile  a:\txtsetup.oem [aaaa]>f6.tmp
DOS下就这么简单提取出了[aaaa]段落的内容
回复

使用道具 举报

发表于 2010-11-6 19:14:06 | 显示全部楼层
原帖由 zhaohj 于 2010-11-6 16:14 发表


inifile  a:\txtsetup.oem [aaaa]>f6.tmp
DOS下就这么简单提取出了[aaaa]段落的内容


尽量运用现有的功能达到目的,避免重复开发,
我将批处理改了下,算是一个通用的外部命令了
用法:
WENV set INIFILE=INI文件 [段名]
GETSECT.BAT

GETSECT.rar (707 Bytes, 下载次数: 132)
回复

使用道具 举报

发表于 2010-11-6 19:22:03 | 显示全部楼层
我比较希望的用法是这样的
WENV read GetSect.env inifile [aaaa]
回复

使用道具 举报

发表于 2010-11-6 19:40:03 | 显示全部楼层

1105bug

11-05 版批处理BUG

随便写一个简单的语句集合的批处理文件,运行正常

在中间任意位置加一句
WENV check 1==2 echo ok
再运行批处理将在这句后退出

应该是只要有一条语句返回0就终止了
比如插入 WENV calc 1-1 && WENV echo ok 也一样
回复

使用道具 举报

 楼主| 发表于 2010-11-6 20:14:55 | 显示全部楼层
我也测试是这样,批处理中无法使用wenv check
本来想用wenv for /f "delims= " %i in ("STRING”) do set s=%i 来获取16进制的第一个数值
发觉“ ”空格分隔符不起作用了。
----------
要用到新版的>>,看来得等到grldr修正了。
回复

使用道具 举报

发表于 2010-11-6 21:13:05 | 显示全部楼层
现在不能用 WENV check " "<-"${VAR}" 来检查VAR是否包含空格(无空格时批处理会终止)

在grldr修正前可以用下面的临时办法代替
WENV reset tmp
WENV set tmp=${VAR# }  #无空格时tmp变量不存在
WENV get tmp && ...
回复

使用道具 举报

 楼主| 发表于 2010-11-6 22:54:46 | 显示全部楼层
想把文本中注释先过滤掉,下面的命令竟然不行:
cat --length=0 (fd1)/txtsetup.oem && fat mkfile size=* (fd1)/temp
echo ; > (fd1)/temp
wenv for /f "eol=# delims=" %i in ( (fd1)/txtsetup.oem ) do (set a=%i ; echo $${a} >> (fd1)/temp)

不知哪里错了?帮忙测试一下

不过滤掉的话,比如[Disks],会找到多个,不知道哪个是需要的。

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

txtsetup.rar

1.55 KB, 下载次数: 93, 下载积分: 无忧币 -2

回复

使用道具 举报

发表于 2010-11-6 23:09:17 | 显示全部楼层
原帖由 zhaohj 于 2010-11-6 20:14 发表
我也测试是这样,批处理中无法使用wenv check
本来想用wenv for /f "delims= " %i in ("STRING”) do set s=%i 来获取16进制的第一个数值
发觉“ ”空格分隔符不起作用了。
----------
要用到新版的>>,看来 ...


wenv默认就是使用空格作为分隔符的啊。这个怎么和GRLDR扯上关系了。应该是WENV的BUG。
回复

使用道具 举报

 楼主| 发表于 2010-11-6 23:16:49 | 显示全部楼层
这个问题的发现,主要是locate=[ 时,象F6的txtsetup.oem有太多的[,导致变量值超过512。

我上传这个txtsetup.oem,比较大。

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

txtsetup.rar

2.42 KB, 下载次数: 92, 下载积分: 无忧币 -2

回复

使用道具 举报

发表于 2010-11-6 23:18:13 | 显示全部楼层
原帖由 zhaohj 于 2010-11-6 22:54 发表
想把文本中注释先过滤掉,下面的命令竟然不行:
cat --length=0 (fd1)/txtsetup.oem && fat mkfile size=* (fd1)/temp
echo ; > (fd1)/temp
wenv for /f "eol=# delims=" %i in ( (fd1)/txtsetup.oem ) do ( ...


最后一条命令改成这样:
wenv for /f "eol=# delims=" %i in ( (fd1)/txtsetup.oem ) do echo %i  >> (fd1)/temp

DO 后面只能跟 WENV 子命令
而 >> 是 Grub4Dos 的特性,是 Grub4Dos 支持的命令间的分隔符

这个写法
wenv for /f "eol=# delims=" %i in ( (fd1)/txtsetup.oem ) do (set a=%i ; echo $${a} >> (fd1)/temp)
Grub4Dos在分析命令行时,会将 >> 前面的部分当作一条命令(显然这个格式是不合WENV语法的),然后将结果传给后面的部分

[ 本帖最后由 tuxw 于 2010-11-6 23:19 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-12-8 11:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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