Batch file 从文本文件中批量提取信息
我需要从文本文件中提取一些信息。这是文件:Batch file 从文本文件中批量提取信息,batch-file,Batch File,我需要从文本文件中提取一些信息。这是文件: <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <XMLEDIT version="XMLEDIT TEST Favorites"> <Name title="NAME_1" url="www.etc.com"> <Source>mms://MYSOURCE_1.com</Source> <
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<XMLEDIT version="XMLEDIT TEST Favorites">
<Name title="NAME_1" url="www.etc.com">
<Source>mms://MYSOURCE_1.com</Source>
</Name>
<Name title="NAME_2" url="www.etc.com/">
<Source>http://MYSOURCE_2.com</Source>
</Name>
<Name title="NAME_3" url="www.etc.com/">
<Source>http://MYSOURCE_3.com</Source>
</Name>
</XMLEDIT>
我已经做了第二部分,提取标签之间的文本,但我不知道如何使名称Title=part和使所有内容在一个脚本中
我的尝试:
@echo off
setlocal enabledelayedexpansion
set Num=0
for /f "tokens=3 delims=<>" %%a in ('find "<Source>" ^< "C:\Test.txt"') Do (
set /a Num+=1
echo !Num!
echo !Num! here title
echo !Num!,source,%%a
)
pause
@echo关闭
延迟扩展
set Num=0
对于/f“tokens=3 delims=“%%a in('find”“^<”C:\Test.txt“)Do(
set/a Num+=1
回声!Num!
echo!Num!这里是标题
echo!Num!,源,%%a
)
暂停
感谢您的帮助@ECHO OFF
SETLOCAL
设置“sourcedir=U:\sourcedir”
设置“filename1=%sourcedir%\q34872773.txt”
设置/a节=0
对于/f“usebackqtokens=1,2,3delims=“%%a IN”(“%filename1%”)DO(
如果“%%b”==“名称标题”调用:setname%%c
如果“%%b”==“源”调用:报告“%%c”
)
后藤:EOF
:报告
集合/a区段+=1
回音%段%
回显%section%%name%
回显%section%,%~1
后藤:EOF
:setname
设置“名称=%~1”
后藤:EOF
您需要更改sourcedir
和filename1
的设置以适应您的环境
我使用了一个名为q34872773.txt
的文件,其中包含用于测试的数据
逐行读取文件,在
上标记到%%A、%%b、%%c
- %%a将接收缩进空格
- %%b将接收令牌字符串
- %%c将收到感兴趣的数据
%%b
为Name title
,则执行子例程setname
,从行的其余部分传递感兴趣的部分。这里的第一个字符串是带引号的名称。子例程simple接受给定的第一个参数,并将该字符串赋给name
,不带引号
当遇到源
标记时,生成报告;撞击部分
计数器并吐出剩余部分
如果要将输出定向到文件,请先删除该文件,然后将
>“filename”
附加到call:report
行。是否必须批量执行此操作?PowerShell内置了强大的XML功能,这将使您的生活轻松数百倍!是的,我更喜欢批处理(或者至少是VBS),因为我知道它,Powershell对我来说是一种未知的语言,所以将来如果我需要编辑它,我不知道如何管理它,谢谢
@echo off
setlocal enabledelayedexpansion
set Num=0
for /f "tokens=3 delims=<>" %%a in ('find "<Source>" ^< "C:\Test.txt"') Do (
set /a Num+=1
echo !Num!
echo !Num! here title
echo !Num!,source,%%a
)
pause