无忧启动论坛

 找回密码
 注册
搜索
一次装机 终生领工资最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
诚聘PE工具开发技术员QQ:1607112133系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
楼主: zhaohj

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
 楼主| 发表于 2010-11-8 23:42:55 | 显示全部楼层
想在循环里运行你的批处理,看来还得改造成wenv read bat格式的。

但这么多判断语句,好像根本无法实现。

举例说明,下面这段:
[scsi]
ICH6RAHCI="INTEL ICH6R AHCI"
ICH6MAHCI="INTEL ICH6M AHCI"
ICH6RRAID="INTEL ICH6R RAID"

[HardwareIds.scsi.ICH6RAHCI]
id="PCI\VEN_8086&DEV_2652&CC_0106","iaStor"
[HardwareIds.scsi.ICH6MAHCI]
id="PCI\VEN_8086&DEV_2653&CC_0106","iaStor"
[HardwareIds.scsi.ICH6RRAID]
id="PCI\VEN_8086&DEV_2652&CC_0104","iaStor"

我现在只知道 id 值,只有通过批处理取出[scsi]段内容如生成FILE,然后wenv for /f  "delims==" %i in ( FILE ) do (set a=%i,set INIFILE=OEM [HardwareIds.scsi.$${a}] ; ...

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

使用道具 举报

发表于 2010-11-9 00:07:47 | 显示全部楼层
是有这个问题,Grub4Dos 的批处理需要直接运行,不能由 WENV 调用

read 不支持条件连写命令,也不能使用 Grub4Dos 的文件重定向和管道

再想想看有没有其它办法解决循环运行的问题
实在不行,干脆在 find 命令里直接给你支持这个特殊功能算了,反正这个 find 命令估计也只有你用,

或者最后还是得要一个你说的 inifile,不过我对这个不看好,除了你这个用法,inifile 的独立的read/write功能在grub4dos环境下实在没什么用处,而没有了read/write还能叫inifile吗

[ 本帖最后由 tuxw 于 2010-11-9 00:15 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2010-11-9 00:15:45 | 显示全部楼层
问题反过来了,知道某段落的部分内容,反查段落名。
回复

使用道具 举报

发表于 2010-11-9 01:04:43 | 显示全部楼层
已经实现了 WENV find [-skip=S] [-len=L] [-end=STRING] [-c] [-r] STRING FILE
但有其它部分的代码(switch)正在修改,明天上传吧

WENV find -end=[  [Disks] /TXTSETUP.OEM
直接输出 [Disks] 段

顺手添加了个 -r,反向查找,正好满足你反查段名的问题,不过这部分没在代码里实现,需要自己批处理
回复

使用道具 举报

发表于 2010-11-9 02:38:38 | 显示全部楼层
已上传
help 中不显示 find 命令,但 WENV find 可显示其语法
WENV find [-skip=S] [-len=L] [-end=ENDS] [-c] [-r] STRING FILE

新增 -r 参数反向查找STRING,为简化编程,取消了 skip>0 时从 skip+1 开始查找的特性
新增 -end 参数
未指定 -end 时,跟之前一样,只是一个简的查找命令,取得第一个找到的位置

如指定 -end,则找到 STRING 后,继续向后查找 ENDS,找到则输出之间的内容
如找到 ENDS 会设置好 rd,可以在find命令之后立即复制 (rd)+1 到文件

find 命令只要找到 STRING 就会返回1,通过一个返回值没办法知道是否有找到 ENDS
添加了一个内置变量 ?_FIND,如找到,设置其为 ENDS的偏移量,否则删除 ?_FIND,可根据 ?_FIND 是否存在来判断能否复制 rd

[ 本帖最后由 tuxw 于 2010-11-9 02:47 编辑 ]
回复

使用道具 举报

发表于 2010-11-9 03:01:50 | 显示全部楼层
反查段名

WENV find string /TXTSETUP.OEM && WENV set a=${?_WENV}
WENF find -len=${a} -r [ /TXTSETUP.OEM && WENV set b=${?_WENV}
WENV calc -hex c=b+1
WENV find -skip=${c} ] /TXTSETUP.OEM && WENV set c=${?_WENV}
WENV calc c=c-b+1
WENV call cat --skip=${b} --length=${c} /TXTSETUP.OEM
回复

使用道具 举报

 楼主| 发表于 2010-11-9 07:58:49 | 显示全部楼层
想不到凌晨3点还在忙,辛苦了。万分感谢实现了我的需求。

今天好好测试,不能辜负你的成果!
回复

使用道具 举报

发表于 2010-11-9 20:32:57 | 显示全部楼层

grub4dos 2010年11曰7号版本bug

以下的2003.iso都用nlite集成了firadisk 0.0.1.24驱动
在电脑上用buldr启动win2003的iso蓝屏。
按重启键重启电脑,再用grub4dos直接载入2003.iso蓝屏。
在电脑上用buldr启动win2003的iso蓝屏。
按关机键关闭电脑,再用grub4dos直接载入2003.iso不蓝屏
map --mem /2003.iso (0xff)
map --hook
chainloader (0xff)
map --mem /1.img (fd0)
map --hook
boot
上面的菜单不蓝屏
map --mem /1.img (fd0)
map --hook
map --mem /2003.iso (0xff)
map --hook
chainloader (0xff)
boot
这个菜单蓝屏
其中1.img就是一个空的软盘镜像

[ 本帖最后由 510819776 于 2010-11-9 20:36 编辑 ]
回复

使用道具 举报

发表于 2010-11-9 20:49:26 | 显示全部楼层

回复 #58 510819776 的帖子

很意外的发现  map iso和img的顺序不同居然还有区别  2003是哪个版本的  蓝屏的话蓝屏代码是什么  

能不能再帮忙测试下没有用nlite集成firadisk驱动的2003.iso交换map iso和img的顺序还蓝不蓝
回复

使用道具 举报

发表于 2010-11-9 21:20:14 | 显示全部楼层
后一个菜单,后面加一行
rootnoverify (fd0)

[ 本帖最后由 pseudo 于 2010-11-9 21:21 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-3-23 12:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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