Board logo

标题: 求助一个判断空行跳出循环的问题 [打印本页]

作者: wjmcool     时间: 2011-1-23 16:06    标题: 求助一个判断空行跳出循环的问题

有一个注册表文件,我想把它其中的某段提取出来,并生成一个新的注册表,我的思路是先利用循环读取到这一段行号,然后再使用一个循环依次读取该行号以下的每行内容并写入新的注册表文件,遇到第一个空行则跳出循环。但是现在碰到问题,就是如何判断空行,我是这样写的%%b==""&&goto :end,文件是生成成功了,但是CMD窗口老是报错,请教各位大侠如何解决,另请大侠帮我看看代码是否繁琐,是否有更好的写法,万分感谢


以下是注册表样式

[HKEY_LOCAL_MACHINE\SOFTWARE\dzh\SuperStk\Market\IX]
"BaseInfoPath"=""
"StkDataPath"=""
"name"="全球指数"
"shortname"="全球"
"labellen"=dword:00000000
"namelen"=dword:00000000
"timezone"=dword:00000008
"opentime1"=dword:00000258
"closetime1"=dword:00000b54
"py"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\dzh\SUPERSTK\Market\HK]
"BaseInfoPath"=""
"StkDataPath"=""
"name"="香港联合交易所"
"shortname"="港"
"labellen"=dword:00000000
"namelen"=dword:00000008
"timezone"=dword:00000008
"opentime1"=dword:000003e8
"opentime2"=dword:00000596
"closetime1"=dword:000004ce
"closetime2"=dword:00000640
"py"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\dzh\SuperStk\Market\HS]
"BaseInfoPath"=""
"StkDataPath"=""
"name"="AH股"
"shortname"="AH"
"labellen"=dword:00000000
"namelen"=dword:00000008
"timezone"=dword:00000008
"opentime1"=dword:000003e8
"opentime2"=dword:00000596
"closetime1"=dword:000004ce
"closetime2"=dword:00000640
"py"=dword:00000001
"mainindex"="HSI"
"Version"=dword:00000064
"TypeMask"="***** 0"
"LargeRepData"=dword:00000001
"LastDynaReq"=dword:00000000
"VarTradeTime"=dword:00000001
"SubType"="AH股 3 1 1"
……………………

以下是我写的代码
@echo off
set Regf=\[HKEY_LOCAL_MACHINE\SOFTWARE\dzh\SuperStk\Market\HK\]
for /f "tokens=1* delims=:" %%i in ('type aaa.reg^|findstr /in "%Regf%"') do set /a Regnum=%%i-1
for /f "skip=%Regnum% tokens=1* delims=:" %%a in ('type aaa.reg^|findstr /in .*') do (
echo.%%b >>555.reg
%%b==""&&goto :end)
:end
PAUSE&exit
[ Last edited by wjmcool on 2011-1-23 at 16:08 ]
作者: Hanyeguxing     时间: 2011-1-23 16:46

@echo off&setlocal enabledelayedexpansion
(for /f "delims=" %%a in ('type 1.reg') do if defined n (
        set "a=%%a"
        if "!a:~0,1!!a:~-1!"=="[]" goto:eof
        echo !a!
        ) else if /i "%%a"=="[HKEY_LOCAL_MACHINE\SOFTWARE\dzh\SuperStk\Market\HK]" set n==&echo %%a
)>1-.reg
或:
@echo off
(for /f "delims=" %%a in ('type 1.reg') do if defined n (
        set "a=%%a"
        setlocal enabledelayedexpansion
        if "!a:~0,1!!a:~-1!"=="[]" goto:eof
        echo !a!
        endlocal
        ) else if /i "%%a"=="[HKEY_LOCAL_MACHINE\SOFTWARE\dzh\SuperStk\Market\HK]" set n==&echo %%a
)>1-.reg
[ Last edited by Hanyeguxing on 2011-1-23 at 17:45 ]