Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 用于替换多个文件中文本的批处理脚本_Batch File_Powershell - Fatal编程技术网

Batch file 用于替换多个文件中文本的批处理脚本

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位数字,

我有一个多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前面添加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"
)