2014-05-18 118 views
-1

我有一个多重xml文件(扩展名'.xml'),我需要找到并替换文本。 我有以下模式的文字。批处理脚本替换多个文件中的文本

<Music href="6000111.genre" title="AAA"> 
<Music format="ditamap" href="000760.rock" title="222"/> 
<Music format="ditamap" href="000756.rock" title="333"/> 
</Music> 

href是目前与扩展 '摇滚' 6位数字。

我需要在扩展名为.rock的前缀中添加href的前缀'Z'。这是href="000760.rock - >href="Z000760.rock

我应该得到以下结果为:

<Music href="6000111.genre" title="AAA"> <Music format="ditamap" href="X000760.rock" title="222"/> <Music format="ditamap" href="X000756.rock" title="333"/> </Music> 真的会感谢你的帮助。

回答

0

你应该表现出一些努力。你有什么尝试?

这里有一个解决方案:

#Get XML files 
Get-ChildItem -Path "c:\myXMLsource" -Filter "*.xml" | ForEach-Object { 
    #Read all text in file 
    (Get-Content $_.FullName) | 
    #Foreach line, Add Z prefix in href value. 
    ForEach-Object { $_ -replace '(?<=href=")(\d{6})(?=\.rock")', 'Z$1' } | 
    #Save text 
    Set-Content $_.FullName 
} 
0

这将使用名为repl.bat一个帮手批处理文件 - 下载来​​自:https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

repl.bat在同一文件夹中的批处理文件或者说是在一个文件夹中路径。

@echo off 
for %%a in (*.xml) do (
type "%%a" | repl "([0-9]*\.rock)" "Z$1" >"%%a.tmp" 
move /y "%%a.tmp" "%%a" 
) 
相关问题