2014-05-18 117 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" 
) 
相關問題