无忧启动论坛

 找回密码
 注册
搜索
一次装机 终生领工资最纯净的「微PE装机优盘」UEPON大师作品★IDC大全★服务器租赁、托管★优惠促销★
可防勒索的强大数据备份恢复软件卡瑞飞系统和装机二合一超级U盘广告联系 QQ:184822951 微信:wuyouceo
查看: 240992|回复: 3009

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
发表于 2010-11-5 18:03:03 | 显示全部楼层 |阅读模式
本帖主要为对grub4dos的建议,或是bug的反馈,问题请去问题专帖。          by  sratlf

===================================================================

cat命令的语法是这样的:
cat [--hex] [--skip=S] [--length=L] [--locate=STRING] [--locate-align=A] FILE

--locate=STRING :查找文件中指定字符串的位置,有几个就输出几个
如文件内容:
PCI$
$PCI\VEN_1000&DEV_0050=lsi_sas                  <----------占30+2个字节=0x20
$PCI\VEN_1000&DEV_0056=lsi_sas   
$PCI\VEN_1000&DEV_005A=lsi_sas
$PCI\VEN_1000&DEV_0062=lsi_sas
$PCI\VEN_1000&DEV_0054=lsi_sas
$PCI\VEN_1000&DEV_0058=lsi_sas
$PCI\VEN_1000&DEV_005E=lsi_sas
-----------
--locate=$PCI,会输出16进制的数值,用空格分开,上面回车换行占2个字节:
6 26 46 66 86 a6 c6


[--skip=S]  跳过多少字节开始,这里S是10进制数或16进制数

----------------------------------
问题1:--locate=STRING如果输出16进制,建议输出格式改成0x6 0x26 0x46 ...
问题2:--skip=S 与上面对应为16进制。
问题3:希望加个参数,STRING不分大小写
...

[ 本帖最后由 zhaohj 于 2010-11-11 09:48 编辑 ]

点评

www.13958867733.com/info/XrEFcWfFXrE/ 庶女嫡妃  发表于 2015-3-26 18:15
发表于 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)
回复 支持 2 反对 1

使用道具 举报

 楼主| 发表于 2010-11-5 22:13:01 | 显示全部楼层
原帖由 chenall 于 2010-11-5 19:12 发表
我觉得这些不是很重要的东西尽量不要使用内部的命令去实现。

你可以把你最终想要得到的结果贴出来。
注:是最终的目的,而不是使用这个命令要达到的过程,也许会有更好的解决方案。

看看tuxw或zxw能不能 ...


[aaaa]
sgrhgjhm
zbgnhgj
[bbbb]
sytrhy
hnh
-------------------
我的目的很简单,如:INIFILE 文件名 [aaaa]
显示[aaaa]段录内容
回复 支持 3 反对 0

使用道具 举报

发表于 2010-11-5 21:18:08 | 显示全部楼层
@zhaohj
问题1

可以这样解决
cat --locate=... | WENV set a=
WENV set a=0x${a! = 0x}   # 最前面加上0x,然后将空格替换为空格0x

[ 本帖最后由 tuxw 于 2010-11-5 21:23 编辑 ]
回复 支持 2 反对 0

使用道具 举报

发表于 2010-11-5 19:12:01 | 显示全部楼层
我觉得这些不是很重要的东西尽量不要使用内部的命令去实现。

你可以把你最终想要得到的结果贴出来。
注:是最终的目的,而不是使用这个命令要达到的过程,也许会有更好的解决方案。

看看tuxw或zxw能不能想办法去实现。
回复 支持 2 反对 0

使用道具 举报

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

1105bug

11-05 版批处理BUG

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

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

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

使用道具 举报

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

使用道具 举报

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


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

使用道具 举报

发表于 2010-11-5 22:26:38 | 显示全部楼层
可以用 WENV 命令实现,只是步骤麻烦了点

!BAT
:记录偏移1
cat --locate=[aaaa] /T.TXT | WENV set s1=
WENV set s1=0x${s1}
WENV check " "<-"${s1}" set s1=${s1%% }

:记录偏移2
cat --locate=[bbbb] /T.TXT | WENV set s2=
WENV set s2=0x${s2}
WENV check " "<-"${s2}" set s2=${s2%% }

:如果查找次序相反,交换偏移量,保证s1在前面

:交换方法1: 大文件时加法有可能计算溢出
:WENV check ${s1}>=${s2} (calc s1=s1+s2 ; calc s2=s1-s2 ; calc s1=s1-s2)

:交换方法2: 需要修复calc bug的新版WENV
WENV check ${s1}>=${s2} (calc s1=s1^s2 ; calc s2=s1^s2 ; calc s1=s1^s2)

:起始位置, 字节计数
WENV calc s1=s1+6+2
WENV calc s2=s2-s1-2

WENV call cat --skip=${s1} --length=${s2} /T.TXT


@chenall
不能用最新的测试版grldr运行,试了 11-03 的可以
11-05 的最新grldr在批处理中 WENV check  返回 0 时会终止执行批处理

[ 本帖最后由 tuxw 于 2010-11-6 01:34 编辑 ]

T.rar

440 Bytes, 下载次数: 280

回复 支持 反对

使用道具 举报

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

GRUB4DOS更新建议专帖

和问题贴分开处理
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-11-6 14:36:39 | 显示全部楼层
最近几天一直在分析N版的F6驱动(oem格式驱动),在现有的条件下,要想实现原SRS_F6返回模块的仿真盘功能实在太难了。而且很多oem驱动包也是这种格式的,下面贴出一部分,方便分析:

现有条件:只知道(1)
需要达到的目的:
  1:需要提取对应段落(2)段落名,提取出ICH10DAHCI
  2:需要提取对应段落(4),及所有sys扩展名的文件名、所有inf扩展名的文件名
  3:需要提取 “相对目录"

为何要这么做?
  1:需要(2)是为了修改默认SCSI
      也为了方便修改成单ID
  2:需要知道文件名及路径,主要是fat copy需要完整路径的文件名

[ 本帖最后由 zhaohj 于 2010-11-6 16:04 编辑 ]
F6.JPG
回复 支持 反对

使用道具 举报

发表于 2010-11-6 15:26:31 | 显示全部楼层
建议在无忧开个grub4dos的版块,时空论坛很少去。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-11-6 15:51:17 | 显示全部楼层
原帖由 tuxw 于 2010-11-5 22:26 发表
可以用 WENV 命令实现,只是步骤麻烦了点



你这个最大的问题:[bbbb]段落名不可能预先知道的。
回复 支持 反对

使用道具 举报

发表于 2010-11-6 15:59:45 | 显示全部楼层
可以先查找 [aaaa] 再查找 [
如果 [bbbb] 不可预知,用 INIFILE 的方式更不可能实现,INI 是必须要知道段名和变量名才可以操作的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-1-20 04:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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