|
好像是调用批处理出错
奇怪的是单步运行都没有问题,但批处理最后会出错。
下面这个是TUXW的批处理:
!BAT
:设置变量INIFILE=INI文件名 [段名],打印该段内容
:
:参数检查
WENV get INIFILE || WENV (echo Variable INIFILE not defined ; call kernel)
WENV reset _ini_*
:
:定义输出文件
WENV set OUTFILE=(fd2)/OUTFILE
WENV call cat --length=0 ${OUTFILE} ]]& exec FAT del ${OUTFILE}
:文件名, 段名, 缓冲区
WENV set -t _ini_fn=${INIFILE% [}
WENV set -t _ini_sc=${INIFILE#${_ini_fn}}
WENV check " "<-"${_ini_sc}" (set -t _ini_buf=$${_ini_sc#]} ; set _ini_sc=$${_ini_sc%% })
:
:保存当前debug状态
debug status | WENV set -t _ini_db= && WENV set _ini_db=${_ini_db## }
:
:检查文件存在
debug 0 || WENV call cat --length=0 ${_ini_fn} || WENV (echo not found file ${_ini_fn} ; reset _ini_* ; call kernel)
debug 1
:
:记录偏移1
WENV find ${_ini_sc} ${_ini_fn} | WENV set -t _ini_s1=
WENV get _ini_s1 || WENV (echo not found sect ${_ini_sc} ; call debug ${_ini_db} ; reset _ini_* ; call kernel)
:
:查找下一个可能的段
WENV calc _ini_s2=_ini_s1+1
WENV find -skip=${_ini_s2} [ ${_ini_fn} | WENV set -t _ini_s2=
:如没找到,取文件长度,并转化为16进制
WENV get _ini_s2 || WENV call cat --length=0 ${_ini_fn} | WENV set -t _ini_s2= && WENV set _ini_s2=0x${_ini_s2}
WENV check " "<-"${_ini_s2}" set _ini_s2=${_ini_s2## }
:
:起始位置, 字节数
WENV (calc _ini_s1=_ini_s1+${_ini_sc,?} ; calc _ini_s2=_ini_s2-_ini_s1)
:
:显示
WENV get _ini_buf || WENV call cat --skip=${_ini_s1} --length=${_ini_s2} ${_ini_fn}
:
:输出
WENV get _ini_buf && WENV (call map --rd-base=${_ini_buf} ; call map --rd-size=${_ini_s2} ; reset INI_OK)
WENV get _ini_buf && WENV call cat --skip=${_ini_s1} --length=${_ini_s2} ${_ini_fn} > (rd)+1 && WENV set INI_OK=Y
WENV get INI_OK && WENV get OUTFILE && WENV call exec FAT copy /o (rd)+1 ${OUTFILE}
:
:恢复环境
WENV (call debug ${_ini_db} ; reset _ini_* ; reset INI_OK)
clear |
|