|
本帖最后由 zhaohj 于 2013-6-15 13:14 编辑
先贴一个字符串处理的P处理,以后再搞一个for命令的P处理,这样SRSF6N可以去掉WENV了。说实话,WENV功能不错,丢弃也可惜的。
extract.bat
!BAT
# 此批处理用来增强字符串的处理,实现wenv中字符串分隔截取的部分功能
# extract.bat 变量名 功能号(#、##、%、%%) 分隔符
# 变量名是GRUB4DOS的一个变量,必须已经存在;下面都是.为分隔符
# ${VAR#STRING} 删除STRING前面的字符; 如aa.bb.cc -> bb.cc
# ${VAR##STRING} 删除STRING前面的字符,贪婪模式; 如aa.bb.cc -> cc
# ${VAR%STRING} 删除STRING后面的字符; 如aa.bb.cc -> aa.bb
# ${VAR%%STRING} 删除STRING后面的字符,贪婪模式; 如aa.bb.cc -> aa
set tmp=
setlocal
debug off
if exist %1 goto :extract
echo $[0101] extract module for grub4dos by zhaohj 2013-06-15
echo $[0102] usage:
echo $[0106] extract VAR # string , Return the string at first separator next
echo $[0106] extract VAR ## string , Return the string at last separator next
echo $[0106] extract VAR % string , Return the string at first separator front
echo $[0106] extract VAR %%% string , Return the string at last separator front
echo
exit
:extract
if not "%2"=="#" if not "%2"=="##" if not "%2"=="%" if not "%2"=="%%%%" exit
set tmp=%2
if not exist tmp exit
echo %%%1%% > (md)0x226+2
if "%tmp%"=="#" goto :extract_#
if "%tmp%"=="##" goto :extract_##
if "%tmp%"=="%" goto :extract_1
if "%2%"=="%%%" goto :extract_2
goto :extract_ok
:extract_#
cat --locate=%3 --number=1 (md)0x226+1 > nul
set /A skip=%?_WENV%
if not exist skip exit
set /A skip=%skip%+1
cat --skip=%skip% (md)0x226+1 >> (md)0x227+1
goto :extract_ok
:extract_##
cat --locate=%3 (md)0x226+1 > nul
set /A skip=%?_WENV%
if not exist skip exit
set /A skip=%skip%+1
cat --skip=%skip% (md)0x226+1 >> (md)0x227+1
goto :extract_ok
:extract_1
cat --locate=%3 (md)0x226+1 > nul
set /A skip=%?_WENV%
if not exist skip exit
cat --length=%skip% (md)0x226+1 >> (md)0x227+1
goto :extract_ok
:extract_2
cat --locate=%3 --number=1 (md)0x226+1 > nul
set /A skip=%?_WENV%
if not exist skip exit
cat --length=%skip% (md)0x226+1 >> (md)0x227+1
:extract_ok
cat (md)0x227+1 | set tmp=
endlocal && set tmp=%%tmp%% |
|