我必须在Windows目录中的所有文件中替换字符串 xmlns =“http://www.wnco.com/bookingevents/v2”
请帮我解决这个问题
答案 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>
要注意的主要问题是引用以处理文件名中的空格。