批处理-从XML文件获取标记值
我有一个名为“test.XML”的XML文件 如何将“ragent name”标记中的“Agent-name-818”值放入批处理文件中的变量中批处理-从XML文件获取标记值,xml,windows,batch-file,Xml,Windows,Batch File,我有一个名为“test.XML”的XML文件 如何将“ragent name”标记中的“Agent-name-818”值放入批处理文件中的变量中 <ragent> <type>ragent</type> <logger> <loglevel>log_warning</loglevel> <logger-dir>.</logger-dir> <
<ragent>
<type>ragent</type>
<logger>
<loglevel>log_warning</loglevel>
<logger-dir>.</logger-dir>
</logger>
<additional-config>
<logger-level>log_warning</logger-level>
</additional-config>
<configuration-info ts="26-02-2018_15-31-54">
<apply-config-now>false</apply-config-now>
<manual-settings-activation>Automatic</manual-settings-activation>
<ragent-name ts="26-02-2018_15-31-54">Agent-name-8181818</ragent-name>
<site ts="26-02-2018_15-31-54">site</site>
</configuration-info>
</ragent>
拉根
日志警告
.
日志警告
假的
自动的
代理-name-818
网站
检查(不需要外部二进制文件,只使用内置的windows功能):
要将结果指定给变量,请执行以下操作:
for /f "tokens=* delims=" %%# in ('call xpath test.xml "*//configuration-info/ragent-name"') do set "reagent=%%#"
作为批处理文件行
FOR /f "tokens=3delims=<>" %%a IN ('findstr "ragent-name" "q49011270.txt"') DO echo %%a
FOR/f“tokens=3delims=“%%a IN('findstr“ragent name”“q49011270.txt”)DO echo%%a
其中q49011270.txt
是包含数据的文件
当然,您可以将结果分配给一个变量,而不是
echo
ing它…您可以使用SETX命令的查找功能来解决此问题和其他类似问题:
for /F "tokens=3" %%a in ('setx /F test.xml dummyVar /R 0^,2 ragent-name /D "<>"') do set "ragent=%%a" & goto continue
:continue
echo %ragent:~0,-1%
对于('setx/F test.xml dummyVar/R 0^,2 ragent name/D'')中的/F“tokens=3”%%a,请设置“ragent=%%a”&继续
:继续
回音%ragent:~0,-1%
在此命令中:
setx /F test.xml dummyVar /R 0^,2 ragent-name /D "<>"
setx/F test.xml dummyVar/R 0^,2 ragent name/D“”
- /F test.xml是要处理的文件
- dummyVar是必需的变量
- /R 0,2 ragent name指定在文件中搜索“ragent name”标记,找到后,返回放置在同一行(0)中的标记和右侧的2个标记
- /D”“指示标记分隔符是“”字符,除了空格和制表符之外
更多详细信息,请参见。将
xmllint
替换为xmlstarlet
(可在windows上使用)。不幸的是,我在批处理文件中使用xmlstarlet时遇到了困难,尤其是当xml文件具有命名空间时。更好的选择是使用Jscript、Vbscript或Powershell。它们都具有读取和写入xml文件的本机功能。下面发布的xpath.bat
程序实际上是一个混合批处理文件,它调用jscript来完成它的工作。@Squashman你能举个例子吗?
for /F "tokens=3" %%a in ('setx /F test.xml dummyVar /R 0^,2 ragent-name /D "<>"') do set "ragent=%%a" & goto continue
:continue
echo %ragent:~0,-1%
setx /F test.xml dummyVar /R 0^,2 ragent-name /D "<>"