我已经使用repl.bat成功地从文本文件中提取了一些行数月。不幸的是,输出已更改为XML,现在它在XML标记中具有反斜杠作为分隔符。
以下是输出文件为
时我正在使用的内容Job Notes=John Smith 123456 dd/MM/yyyy h:mm:ss PM 654321
File Type=4
Location=3
代码
@echo off
set "input=before.txt"
set "output=after.txt"
findstr /r /i /c:"^Job Notes=" "%input%" |repl ".*=(.*) (\d+) (\d+\/\d+\/\d+) \d+:\d+:\d+ .*" "Name=$1\r\nFile Number=$2\r\nDate=$3" x >"%output%"
findstr /r /i /c:"^File Type=" "%input%" >>"%output%"
findstr /r /i /c:"^Location=" "%input%" >>"%output%"
输出现在是XML
<job_notes>John Smith\123456\dd/MM/yyyy h:mm:ss PM\654321</job_notes>
<file_type>4</file_type>
<location>3</location>
不确定这是否是问题,但XML的结构是
<root>
<job>
<job_notes>xxxxxxx</job_notes>
<file_type>x</file_type>
<location>x</location>
</job>
</root>
无法修改脚本。不确定问题是XML文件的结构还是分隔符。
谢谢
答案 0 :(得分:0)
使用repl.bat编写的dbenham修改后的批处理文件:
@echo off
set "input=before.xml"
set "output=after.txt"
findstr.exe /r /i /c:"<job_notes>" "%input%" | repl.bat ".*job_notes.(.*)\\(\d+).(\d+\/\d+\/\d+).*" "Name=$1\r\nFile Number=$2\r\nDate=$3" x >"%output%"
findstr.exe /r /i /c:"<file_type>" "%input%" | repl.bat ".*file_type.(\d+).*" "File Type=$1" x >>"%output%"
findstr.exe /r /i /c:"<location>" "%input%" | repl.bat ".*location.(\d+).*" "Location=$1" x >>"%output%"
我用于测试 before.xml 以及以下数据:
<root>
<job>
<job_notes>John Smith\123456\02/06/2014 8:34:27 PM\654321</job_notes>
<file_type>4</file_type>
<location>3</location>
</job>
</root>
执行批处理文件后文件 after.txt 包含此输入示例:
Name=John Smith
File Number=123456
Date=02/06/2014
File Type=4
Location=3