Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从批处理文件读取XML输入,并将值存储在变量中,(将Json输出固定为XML)_Xml_Batch File_Compare - Fatal编程技术网

从批处理文件读取XML输入,并将值存储在变量中,(将Json输出固定为XML)

从批处理文件读取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

我一直在研究如何将xml输入文件读入批处理文件以读取和比较数据,但运气不太好

然后需要将这些数据存储为变量,以便我们可以比较这些值

我们总共需要测量4个值,即温度、ph、nh3和o2

由于这些值在提取数据时每小时都会发生变化,因此我们需要一种将数据与设定值进行比较的方法,例如:

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未定义,有什么想法吗?您现在发布的数据没有任何换行符。请在我的答案中尝试修改后的代码。