Batch file 用于替换多个文件中文本的批处理脚本
我有一个多xml文件(扩展名为“.xml”),需要在其中查找和替换文本。 我有以下模式的文本Batch file 用于替换多个文件中文本的批处理脚本,batch-file,powershell,Batch File,Powershell,我有一个多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位数字,
<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前面添加previx'Z',扩展名为.rock。这就是href=“000760.rock
-->href=“Z000760.rock
我应该得到以下结果:
我非常感谢你的帮助。你应该付出一些努力。你试过什么 这里有一个解决方案:
#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
}
#获取XML文件
获取ChildItem-路径“c:\myXMLsource”-过滤器“*.xml”| ForEach对象{
#读取文件中的所有文本
(获取内容$\完整名称)|
#对于每一行,在href值中添加Z前缀。
ForEach对象{$\替换'(?这使用了一个名为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"
)