Windows中的批处理文件以替换所有文件中的字符串

Windows中的批处理文件以替换所有文件中的字符串,windows,Windows,我必须替换字符串xmlns=”http://www.wnco.com/bookingevents/v2“在windows目录中的所有文件中没有任何内容 请帮助我解决此问题您可以使用打包在批处理文件中的powershell来完成此操作。以下是一个例子: @for %%I in (%1) do @call :FIXUP "%%~fI" %2 @goto EXIT :FIXUP @>tmp.ps1 echo.get-content %1 ^| foreach-object { $_ -repl

我必须替换字符串xmlns=”http://www.wnco.com/bookingevents/v2“在windows目录中的所有文件中没有任何内容


请帮助我解决此问题

您可以使用打包在批处理文件中的powershell来完成此操作。以下是一个例子:

@for %%I in (%1) do @call :FIXUP "%%~fI" %2
@goto EXIT

:FIXUP
@>tmp.ps1 echo.get-content %1 ^| foreach-object { $_ -replace %2,""} ^| set-content '%~1.fixed'
@set curdir=%~dp0
@set script=%curdir%tmp.ps1
@powershell -NoProfile -ExecutionPolicy Bypass -Command "& '%script%'"
@del >NUL /q %1 && @ren %1.fixed %1
@exit /b 0

:EXIT
powershell脚本是在此处动态创建的,希望看到ASCII文件。如果使用unicode,请选中powershell命令的“-Encoding unicode”选项

因此,给定如下所示的示例xml文件,我们可以使用
fixup.cmd*.xml“xmlns=“”http://www.wnco.com/bookingevents/v2“”“
将此匹配表达式应用于当前目录中的所有xml文件。我在一些文件中使用以下方法对此进行了测试:

<?xml version=1.0 encoding="UTF-8"?>
<a xmlns="http://www.wnco.com/bookingevents/v2">
<b>Something</b>
</a>

某物
运行此:

C:\temp\demo>dir
27/02/2014  10:33               116 a.xml
27/02/2014  10:33               116 b.xml
27/02/2014  10:33               116 c 1.xml
27/02/2014  10:59               354 fixup.cmd

C:\temp\demo>fixup *.xml "xmlns=""http://www.wnco.com/bookingevents/v2"""

C:\temp\demo>type "c 1.xml"
<?xml version=1.0 encoding="UTF-8"?>
<a >
<b>Something</b>
</a>
C:\temp\demo>dir
2014年2月27日10:33 116 a.xml
2014年2月27日10:33 116 b.xml
2014年2月27日10:33 116 c 1.xml
2014年2月27日10:59 354 fixup.cmd
C:\temp\demo>fixup*.xml“xmlns=”http://www.wnco.com/bookingevents/v2"""
C:\temp\demo>键入“c1.xml”
某物

需要注意的主要问题是引用文件名中的空格。

简单的搜索提供了以下两种方法: