我有一个多个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'。
我需要在扩展名.rock中添加带有href的前缀'Z'。那是href="000760.rock
- &gt; 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 :(得分:1)
你应该付出一些努力。你有什么尝试?
这是一个解决方案:
#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
}
答案 1 :(得分: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"
)