我有一个格式为txt的文件:
text1.text2.text3 text4 text5 text6
text7.text8.text9 text10 text11 text12
etc....
我需要一个脚本,它将生成一个新的txt文件格式:
<record>
<string id="day_of_month" value="text1"/>
<string id="month" value="text2"/>
<string id="year" value="text3"/>
<string id="time" value="tekst4"/>
<string id="home_team_id" value="text5"/>
<string id="away_team_id" value="text6"/>
</record>
<record>
<string id="day_of_month" value="text7"/>
<string id="month" value="text8"/>
<string id="year" value="text9"/>
<string id="time" value="text10"/>
<string id="home_team_id" value="text11"/>
<string id="away_team_id" value="text12"/>
</record>
etc....
等....意味着没有定义行数。
答案 0 :(得分:1)
以下脚本可以使用:
@echo off
set in=in.txt
set out=output.txt
(for /f "tokens=1-6 delims=. " %%i in (
%in%
) do (
echo ^<record^>
echo ^<string id="day_of_month" value="%%i"/^>
echo ^<string id="month" value="%%j"/^>
echo ^<string id="year" value="%%k"/^>
echo ^<string id="time" value="%%l"/^>
echo ^<string id="home_team_id" value="%%m"/^>
echo ^<string id="away_team_id" value="%%n"/^>
echo ^</record^>
)) > %out%
答案 1 :(得分:0)
下面非常有效的解决方案使用REPL.BAT - a hybrid JScript/batch utility执行正则表达式搜索并替换每一行stdin并将结果写入stdout。该实用程序是纯本机脚本,可以从XP开始在任何现代Windows机器上运行,无需任何第三方.exe文件。完整文档嵌入在REPL.BAT中。
假设REPL.BAT位于您当前的目录中,或者更好,位于PATH中的某个位置,那么:
@echo off
setlocal enableDelayedExpansion
:: Setup search and replace strings
set "search=(.*?)\.(.*?)\.([\S]*)\s*([\S]*)\s*([\S]*)\s*(.*)"
set "repl=<record>\r\n"
set "n=1"
for %%A in (day_of_month month year time home_team_id away_team_id) do (
set "repl=!repl!<string id=\q%%A\q value=\q$!n!\q/>\r\n"
set /a n+=1
)
set "repl=!repl!</record>"
:: Do all the work
type input.txt|repl.bat search repl xv >output.txt