从批处理文件读取XML输入,并将值存储在变量中,(将Json输出固定为XML)
我一直在研究如何将xml输入文件读入批处理文件以读取和比较数据,但运气不太好 然后需要将这些数据存储为变量,以便我们可以比较这些值 我们总共需要测量4个值,即温度、ph、nh3和o2 由于这些值在提取数据时每小时都会发生变化,因此我们需要一种将数据与设定值进行比较的方法,例如:从批处理文件读取XML输入,并将值存储在变量中,(将Json输出固定为XML),xml,batch-file,compare,Xml,Batch File,Compare,我一直在研究如何将xml输入文件读入批处理文件以读取和比较数据,但运气不太好 然后需要将这些数据存储为变量,以便我们可以比较这些值 我们总共需要测量4个值,即温度、ph、nh3和o2 由于这些值在提取数据时每小时都会发生变化,因此我们需要一种将数据与设定值进行比较的方法,例如: IF ph=7.8 GOTO PHHIGH ELSE OK 这可能吗 非常感谢所有作出回应的人 我已将xml文件包括在下面: 这适用于您现在发布的数据 @echo off for %%a in (temperature
IF ph=7.8 GOTO PHHIGH ELSE OK
这可能吗
非常感谢所有作出回应的人
我已将xml文件包括在下面:
这适用于您现在发布的数据
@echo off
for %%a in (temperature ph nh3 o2) do (
for /f "tokens=2 delims=</>" %%b in ('type "[Megafileupload]Seneye_Reading.xml" ^|findrepl "(<.*?>.*?</.*?>)" "$1\r\n" ^|findrepl "><" ">\r\n<" ^|findrepl ".*<%%a>.*" /e:".*</%%a>.*" /b:".*<curr>" ') do set "123-%%a=%%b"
)
set 123
pause
@echo关闭
对于%%a in(温度ph nh3 o2)do(
对于/f“tokens=2 delims=“%%b in('type”[Megafileupload]Seneye_Reading.xml“^ findrepl”(.*)”$1\r\n“^ findrepl”>\r\n您可以这样做:
@echo off
set $c=1
for /f "delims=" %%a in ('findstr /i "curr" test.txt') do call:next "%%a"
echo ----
echo Temp = %temperature%
echo pH = %pH%
echo NH4 = %NH4%
echo O2 = %O2%
echo ---
if %pH% Geq 7.8 (echo --^> The pH is High) else (echo --^>The pH is OK)
exit /b
:next
set $Line=%1
set $Line=%$Line:<curr>=%
set $Line=%$Line:</curr>=%
set $Line=%$Line: =%
if %$c%==1 set temperature=%$Line:~1,-1%
if %$c%==2 set pH=%$Line:~1,-1%
if %$c%==3 set NH4=%$Line:~1,-1%
if %$c%==4 set O2=%$Line:~1,-1%
set /a $c+=1
@echo off
set $c=1
stringbetween test.xml "<curr>" "</curr>"
for /f "delims=" %%a in (output.txt) do call:next %%a
echo ----
echo Temp = %temperature%
echo pH = %pH%
echo NH3 = %NH3%
echo NH4 = %NH4%
echo O2 = %O2%
echo ---
if %pH% Geq 7.8 (echo --^> The pH is High) else (echo --^>The pH is OK)
exit /b
:next
echo %1
if %$c%==1 set temperature=%1
if %$c%==2 set pH=%1
if %$c%==3 set NH3=%1
if %$c%==4 set NH4=%1
if %$c%==5 set O2=%1
set /a $c+=1
@echo关闭
设置$c=1
对于/f“delims=“%%a in('findstr/i“curr”test.txt'),请调用:下一个“%%a”
回音----
回波温度=%温度%
回声pH=%pH%
回波NH4=%NH4%
回声O2=%O2%
回音---
如果%pH%Geq 7.8(回声--^>pH值高),则其他(回声--^>pH值正常)
退出/b
:下一个
设置$Line=%1
设置$Line=%$Line:=%
设置$Line=%$Line:=%
设置$Line=%$Line:=%
如果%$c%==1,则设置温度=%$行:~1,-1%
如果%$c%==2,设置pH=%$Line:~1,-1%
如果%$c%==3,则设置NH4=%$Line:~1,-1%
如果%$c%==4,则设置O2=%$行:~1,-1%
设置/a$c+=1
将test.txt替换为文件名(.xml或.json)
这将获得
编辑:
显然,您的XML文件在一行上
你可以使用我制作的这个小工具:在这篇文章中:
然后,您的BAT文件将如下所示:
@echo off
set $c=1
for /f "delims=" %%a in ('findstr /i "curr" test.txt') do call:next "%%a"
echo ----
echo Temp = %temperature%
echo pH = %pH%
echo NH4 = %NH4%
echo O2 = %O2%
echo ---
if %pH% Geq 7.8 (echo --^> The pH is High) else (echo --^>The pH is OK)
exit /b
:next
set $Line=%1
set $Line=%$Line:<curr>=%
set $Line=%$Line:</curr>=%
set $Line=%$Line: =%
if %$c%==1 set temperature=%$Line:~1,-1%
if %$c%==2 set pH=%$Line:~1,-1%
if %$c%==3 set NH4=%$Line:~1,-1%
if %$c%==4 set O2=%$Line:~1,-1%
set /a $c+=1
@echo off
set $c=1
stringbetween test.xml "<curr>" "</curr>"
for /f "delims=" %%a in (output.txt) do call:next %%a
echo ----
echo Temp = %temperature%
echo pH = %pH%
echo NH3 = %NH3%
echo NH4 = %NH4%
echo O2 = %O2%
echo ---
if %pH% Geq 7.8 (echo --^> The pH is High) else (echo --^>The pH is OK)
exit /b
:next
echo %1
if %$c%==1 set temperature=%1
if %$c%==2 set pH=%1
if %$c%==3 set NH3=%1
if %$c%==4 set NH4=%1
if %$c%==5 set O2=%1
set /a $c+=1
@echo关闭
设置$c=1
stringbetween test.xml“”“”
对于/f“delims=”%(output.txt)中的%%a,请调用:下一个%%a
回音----
回波温度=%温度%
回声pH=%pH%
回波NH3=%NH3%
回波NH4=%NH4%
回声O2=%O2%
回音---
如果%pH%Geq 7.8(回声--^>pH值高),则其他(回声--^>pH值正常)
退出/b
:下一个
回显%1
如果%$c%==1,则设置温度=%1
如果%$c%==2,则设置pH=%1
如果%$c%==3,则设置NH3=%1
如果%$c%==4,则设置NH4=%1
如果%$c%==5,则设置O2=%1
设置/a$c+=1
再次:用你的xml
文件名替换test.xml
。那不是xml文件,不是json文件吗?嗨,供应商告诉我这是xml文件,但它确实说他们也支持json格式。还可以将其用作输入文件吗?请编辑你的问题。谈论json是没有意义的关于XML文件,但包括JSON文件。感谢您的回复sachadee。我在dos提示符中遇到此错误<此时意外。请提供IEDA?您可以发布(复制/粘贴)吗您的帖子中的xml文件,我们可以实际测试代码。我曾尝试复制和粘贴xml文档,但在此处显示不正确,它显示--0-124.9025.8-0-17.3507.25-1-10.02400.006--1-1122.29094.55-0-18.208.1-0-0-0我已在此处上载xml文档;许多感谢您的数据没有换行符-所有数据都是一行。谢谢foxidrive,我在运行时遇到一个错误,Envriroment变量123未定义,有什么想法吗?您现在发布的数据没有任何换行符。请在我的答案中尝试修改后的代码。