原始文件(Test.xml)
<?xml version="1.0" encoding="Shift_JIS"?>
<root>
<!--標準項目-->
<parameters kind="standard">
<parameter id="a" name="replace">120</parameter>
<parameter id="b" name="replace">120</parameter>
<parameter id="c" name="replace">120</parameter>
<parameter id="d" name="replace">00000001</parameter>
<parameter id="e" name="replace">1</parameter>
</parameters>
</root>
CMD脚本
@echo off
setlocal enableextensions disabledelayedexpansion
set "old="
set "new=3"
for /f "tokens=3 delims=<>" %%a in (
'find "e" "C:\Test.xml"'
) do set "old=%%a"
powershell -Command "(gc C:\Test.xml) -replace '%old%', '%new%' | Out-File -encoding ASCII C:\Test.xml"
exit 0
修改后的文件(执行CMD脚本后)
<?xml version="1.0" encoding="Shift_JIS"?>
<root>
<!--標準項目-->
<parameters kind="standard">
<parameter id="a" name="replace">320</parameter>
<parameter id="b" name="replace">320</parameter>
<parameter id="c" name="replace">320</parameter>
<parameter id="d" name="replace">00000003</parameter>
<parameter id="e" name="replace">3</parameter>
</parameters>
</root>
答案 0 :(得分:0)
如果您的源数据保持这样的格式,则以下命令将起作用。我承认,如果源文本发生变化,这很脆弱,但我并不完全了解您的要求。
Get-Content test.xml | ForEach-Object { $_ -replace '(.*id="e".*>).*(</p.*)', '${1}3$2' }
如果源数据文件中包含Shift-JIS字符,则使用-encoding ASCII
的可能性不大。