如何用批处理比较替换2个xml文件内容?

2024-12-24 17:59:53
推荐回答(3个)
回答1:

首先produce_type="903"这个可以直接通过替换的方式直接替换掉

关键部分就是ID相同的时候替换name的内容
我是用两个批处理结合实现的
首先是第一个
@echo off&setlocal enabledelayedexpansion
for /f "skip=2 tokens=3 delims== " %%b in ('type 1.xml') do (for /f "tokens=3 delims== " %%a in ('type 2.xml') do if %%a == %%b set b=%%b&&for /f tokens^=4^ delims^=^" %%c in ('findstr !b! 1.xml') do set c=%%c&for /f tokens^=4^ delims^=^" %%d in ('findstr !b! 2.xml') do set d=%%d&&call H.bat "!c!" "!d!"
)
它会比对id的值,将出现相同的值发送到另一个批处理 H.bat
里面内容如下:
@echo off&setlocal enabledelayedexpansion
for /f "tokens=*" %%l in ('type "1.xml"')do set setin=%%l&set change=!setin:%1=%2!&echo !change!>>new.txt
copy new.txt 1.xml
del new.txt /s /q

回答2:

匿名,0分,我来帮大伙探探路吧……

提问者ID:坚定信念Comeon
等级:LV1
回答数:0
综上,极有可能是伸手党,各位慎入。

回答3:

@echo off
setlocal enabledelayedexpansion
findstr "compose" 1.xml>content1.txt
rem findstr "compose" 2.xml>content2.txt

for /f tokens^=1-7^ delims^=^" %%a in (2.xml) do (
set exist_%%b=1
set "id_%%b=%%b"
set "name_%%b=%%d"
set "produce_type_%%b=%%f"
)

>3.xml (
echo ^
echo ^
for /f tokens^=1-7^ delims^=^" %%a in (content1.txt) do (
if !exist_%%b! EQU 1 (
echo %%a"!id_%%b!"%%c"!name_%%b!"%%e"!produce_type_%%b!"%%g
) else (
echo %%a"%%b"%%c"%%d"%%e"%%f"%%g
)
)
echo ^

)
del content1.txt
rem del content2.txt