基于指定参数id更改XML中的值
原始文件(Test.xml)基于指定参数id更改XML中的值,xml,batch-file,cmd,Xml,Batch File,Cmd,原始文件(Test.xml) 120 120 120 00000001 1. 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"
120
120
120
00000001
1.
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
<?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>
@echo关闭
setlocal enableextensions disabledelayedexpansion
设置“old=”
设置“新建=3”
对于/f“tokens=3 delims=“%%a in(
'查找“e”“C:\Test.xml”'
)是否设置“旧=%%a”
powershell-命令“(gc C:\Test.xml)-替换“%old%”、“%new%”| Out文件-编码ASCII C:\Test.xml”
出口0
修改文件(执行CMD脚本后)
320
320
320
00000003
3.
如果源数据保持这样的格式,则以下命令将起作用。我承认,如果源文本发生变化,这是脆弱的,但我不完全了解您的要求
Get-Content test.xml | ForEach-Object { $_ -replace '(.*id="e".*>).*(</p.*)', '${1}3$2' }
Get Content test.xml | ForEach对象{$\u-replace'(.*id=“e”。*>).*(查找“e”的C:\test.xml的输出是什么
command?CHCP
命令的输出是什么?另外,请注释掉或删除@echo off
,以查看发生了什么。需要的输出是什么?需要的输出只是为了更改id=“e”值为3。其他值与原始值相同。我已尝试删除@echo off,但结果仍然相同。
Get-Content test.xml | ForEach-Object { $_ -replace '(.*id="e".*>).*(</p.*)', '${1}3$2' }