使用Windows批处理比较两个XML文件
我正在尝试创建一个批处理文件,该文件读取存储在两个不同位置的相同XML文件,并使用xmls文件中的build标记比较其生成版本是否相同。批处理代码为使用Windows批处理比较两个XML文件,xml,windows,batch-file,cmd,Xml,Windows,Batch File,Cmd,我正在尝试创建一个批处理文件,该文件读取存储在两个不同位置的相同XML文件,并使用xmls文件中的build标记比较其生成版本是否相同。批处理代码为 @echo off setlocal enableextensions disabledelayedexpansion set "build=" set "build1=" set "ans=version same" set "wrong=version not same" for /f "tokens=3 delims=<>"
@echo off
setlocal enableextensions disabledelayedexpansion
set "build="
set "build1="
set "ans=version same"
set "wrong=version not same"
for /f "tokens=3 delims=<>" %%a %%b in (
'find /i "<Build>" ^< "C:\Users\Lucy\Desktop\piller-uniblock\master.xml" "C:\piller-uniblock\master.xml" '
) do set "build=%%a" "build1=%%b"
IF "%build%"=="%build1%" echo %ans%
else echo %wrong%
批处理代码为
@echo off
setlocal enableextensions disabledelayedexpansion
set "build="
set "build1="
set "ans=version same"
set "wrong=version not same"
for /f "tokens=3 delims=<>" %%a %%b in (
'find /i "<Build>" ^< "C:\Users\Lucy\Desktop\piller-uniblock\master.xml" "C:\piller-uniblock\master.xml" '
) do set "build=%%a" "build1=%%b"
IF "%build%"=="%build1%" echo %ans%
else echo %wrong%
@echo关闭
setlocal enableextensions disabledelayedexpansion
设置“build=”
设置“build1=”
设置“ans=版本相同”
设置“错误=版本不相同”
对于/f“令牌=3 delims=“%%a%%b in(
“查找/i”“^<”C:\Users\Lucy\Desktop\piller uniblock\master.xml“C:\piller uniblock\master.xml”
)是否设置“build=%%a”“build1=%%b”
如果“%build%”==“build1%”回显%ans%
其他回音%错误%
我试图将两个xml文件的build标记的值存储在两个变量中,然后比较它们。如果它们相同,则通过变量打印“相同”或“不相同”
存储在两个不同位置的XML文件是
master.xml
<?xml version="1.0" encoding="UTF-8"?>
<CDMDataXML xmlns="http://www.avocent.org/trellis/CDMLoaderXMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.avocent.org/trellis/CDMLoaderXMLSchema CDMLoaderXMLSchema.xsd">
<CDMDataVersion>
<Major>1</Major>
<Minor>0</Minor>
<Build>50</Build>
<Delimiter>.</Delimiter>
</CDMDataVersion>
1.
0
50
.
我收到的错误消息是
我无法理解我在这段代码中犯了什么错误。请帮助..您的错误就在这里
for/f“tokens=3 delims=“%%a%%b
首先,您只使用第三个令牌,因此永远不会设置%%b。这样,即使您需要多个令牌,也不必指定%%b,这意味着:
(假设您想要获得第三个和第四个代币)您可以写:
for/f“tokens=3,4 delims=“%%a in…”。。。执行echo%%a%%b
(%b将自动填充第四个令牌)键入这两个文件,使用查找
进行筛选,仅获取
行,并根据包含数据的变量,将检索到的信息分配给其中一个
@echo off
setlocal enableextensions disabledelayedexpansion
set "build="
set "build1="
set "ans=version same"
set "wrong=version not same"
for /f "tokens=3 delims=<>" %%a in ('
2^>nul type "C:\Users\Lucy\Desktop\piller-uniblock\master.xml"
"C:\piller-uniblock\master.xml"
^| find /i "<Build>"
') do if not defined build ( set "build=%%a" ) else ( set "build1=%%a" )
IF "%build%"=="%build1%" ( echo %ans% ) else echo %wrong%
@echo关闭
setlocal enableextensions disabledelayedexpansion
设置“build=”
设置“build1=”
设置“ans=版本相同”
设置“错误=版本不相同”
对于/f“tokens=3 delims=“%%a in('
2^>nul类型“C:\Users\Lucy\Desktop\piller uniblock\master.xml”
“C:\piller uniblock\master.xml”
^|查找/i“”
“)如果未定义生成(设置“build=%%a”)则不执行其他操作(设置“build1=%%a”)
如果“%build%”==“build1%”(回显%ans%),则其他回显%错误%