@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q34872773.txt"
SET /a section=0
FOR /f "usebackqtokens=1,2,3delims=<=>" %%a IN ("%filename1%") DO (
IF "%%b"=="Name title" CALL :setname %%c
IF "%%b"=="Source" CALL :report "%%c"
)
GOTO :EOF
:report
SET /a section +=1
ECHO %section%
ECHO %section% %name%
ECHO %section%,%~1
GOTO :EOF
:setname
SET "name=%~1"
GOTO :EOF
您需要更改
sourcedir
和 filename1
的设置以适合您的情况。
我使用了一个名为
q34872773.txt
的文件,其中包含您的测试数据。
逐行读取文件,将
<
、=
和 >
标记为 %%A、%%b、%%c
%%a 将收到缩进空格
%%b 将收到令牌字符串
%%c将会收到感兴趣的数据
如果
%%b
是 Name title
,则执行子例程 setname
,从该行的其余部分传递感兴趣的部分。这里的第一个字符串是带引号的名称。 simple 子例程采用给定的第一个参数并分配该字符串,不带引号到 name
。
遇到
Source
标签时,生成报告;撞击 section
计数器并吐出剩余的。
如果要将输出定向到文件,请先删除该文件,然后将
>>"filename"
附加到 call :report
行。