从文本文件中批量提取信息

问题描述 投票:0回答:1
batch-file
1个回答
0
投票
@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
行。

© www.soinside.com 2019 - 2024. All rights reserved.