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

时间:2014-02-27 10:27:07

标签: windows

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

请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

您可以使用包装在批处理文件中的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>

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