原帖由 chenall 于 2010-11-5 19:12 发表
我觉得这些不是很重要的东西尽量不要使用内部的命令去实现。
你可以把你最终想要得到的结果贴出来。
注:是最终的目的,而不是使用这个命令要达到的过程,也许会有更好的解决方案。
看看tuxw或zxw能不能 ...
!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
440 Bytes, 下载次数: 422
F6.JPG (132.41 KB, 下载次数: 1212)
!BAT设置变量INIFILE=INI文件名 [段名],打印该段内容
:参数检查
WENV get INIFILE || kernel
WENV reset _ini_*
:文件名、段名
WENV set _ini_fn=${INIFILE% }
WENV set _ini_sc=${INIFILE## }
:保存当前debug状态,打开回显,否则管道命令可能失败
debug status | WENV set -t _ini_db= && WENV set _ini_db=${_ini_db## } && debug 1
:记录偏移1
WENV call cat --locate=${_ini_sc} ${_ini_fn} | WENV set -t _ini_s1=
WENV get _ini_s1 || WENV echo -e not found sect ${_ini_sc}\n && WENV call debug ${_ini_db} && WENV reset _ini_* && kernel
WENV set _ini_s1=0x${_ini_s1}
WENV check " "<-"${_ini_s1}" set _ini_s1=${_ini_s1%% }
:记录偏移2
WENV calc _ini_tmp=_ini_s1+1
WENV call cat --skip=${_ini_tmp} --locate=[ ${_ini_fn} | WENV set -t _ini_s2=
WENV set _ini_s2=0x${_ini_s2}
WENV check " "<-"${_ini_s2}" set _ini_s2=${_ini_s2%% }
:没有找到下一个段时,设置为文件长度
WENV check ${_ini_s2,?}==2 && WENV call cat --length=0 ${_ini_fn} | WENV set -t _ini_s2=
WENV check " "<-"${_ini_s2}" set _ini_s2=${_ini_s2## }
:起始位置, 字节计数
WENV calc _ini_s1=_ini_s1+${_ini_sc,?}
WENV calc _ini_s2=_ini_s2-_ini_s1
:直接显示, 首尾可能有换行(如果内容较短,可通过变量中转显示去掉首尾换行)
WENV call cat --skip=${_ini_s1} --length=${_ini_s2} ${_ini_fn}
:恢复环境
WENV call debug ${_ini_db}
WENV reset _ini_*
1.55 KB, 下载次数: 93
原帖由 zhaohj 于 2010-11-6 20:14 发表
我也测试是这样,批处理中无法使用wenv check
本来想用wenv for /f "delims= " %i in ("STRING”) do set s=%i 来获取16进制的第一个数值
发觉“ ”空格分隔符不起作用了。
----------
要用到新版的>>,看来 ...
2.42 KB, 下载次数: 92
原帖由 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 ( ...
原帖由 zhaohj 于 2010-11-6 23:16 发表
这个问题的发现,主要是locate=[ 时,象F6的txtsetup.oem有太多的[,导致变量值超过512。
我上传这个txtsetup.oem,比较大。
原帖由 zhaohj 于 2010-11-6 20:14 发表
我也测试是这样,批处理中无法使用wenv check
本来想用wenv for /f "delims= " %i in ("STRING”) do set s=%i 来获取16进制的第一个数值
发觉“ ”空格分隔符不起作用了。
----------
要用到新版的>>,看来 ...
Snap1.jpg (15.42 KB, 下载次数: 738)
Snap1.jpg (96.79 KB, 下载次数: 487)
Snap1.jpg (15.36 KB, 下载次数: 531)
Snap1.jpg (84.62 KB, 下载次数: 510)
原帖由 zhaohj 于 2010-11-7 11:02 发表
下面有可能出现溢出:
:查找下一个可能的段
WENV calc _ini_tmp=_ini_s1+${_ini_sc,?}+2
debug 0
WENV call cat --skip=${_ini_tmp} --locate=[ ${_ini_fn}
debug 1
WENV calc _ini_cnt=${?_WENV}
835 Bytes, 下载次数: 88
Snap1.jpg (50.93 KB, 下载次数: 484)
Snap1.jpg (23.64 KB, 下载次数: 519)
Snap1.jpg (15.05 KB, 下载次数: 469)
Snap1.jpg (70.06 KB, 下载次数: 419)
Snap2.jpg (57.31 KB, 下载次数: 442)
Snap1.jpg (68.17 KB, 下载次数: 438)
Snap1.jpg (76.07 KB, 下载次数: 428)
原帖由 zhaohj 于 2010-11-16 15:43 发表
测试发现,如果先map (fd0) (fd1),floppies_curr=2
再map (fd2),也不会增加floppies_curr,始终是2
可能是镜像文件非标准引起的?
再次测试,用标准格式的,也不会增加floppies_curr值,最多是2
下面的 ...
Snap1.jpg (128.92 KB, 下载次数: 426)
Snap1.jpg (94.79 KB, 下载次数: 443)
Snap1.jpg (64.38 KB, 下载次数: 422)
原帖由 zhaohj 于 2010-11-17 22:42 发表
这个问题比较纠结:在11-6的grub上正常运行的SRSF6.IMG,只更换grldr到11-17版本
出现:
初步怀疑是内存冲突或破坏所致。
Snap1.jpg (30.69 KB, 下载次数: 402)
欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) | Powered by Discuz! X3.3 |