从批处理中读取xml

发布于 2025-01-09 15:58:17 字数 454 浏览 0 评论 0原文

我正在尝试使用批处理 (.bat) 文件读取 xml 文件,并且搜索了多个站点但没有成功的解决方案。

XML 文件结构:

<parameter>
<name>myname</name>
<value>1234</value>
</parameter>

尝试的批处理代码:

FOR /f "tokens=2 delims=<>" %%i in ('type "sample.xml" ^|find "myname"') do set "value=%%i"
echo %value%

... 然后重复,每个批处理代码都有自己的名称和值。

我想要做的是使用名称作为搜索条件来获取值。

我无法分享我所尝试的内容,因为我正在使用手机发送此信息。

I am trying to read an xml file using a batch (.bat) file and have searched multiple sites without a successful solution.

XML file structure:

<parameter>
<name>myname</name>
<value>1234</value>
</parameter>

Attempted batch code:

FOR /f "tokens=2 delims=<>" %%i in ('type "sample.xml" ^|find "myname"') do set "value=%%i"
echo %value%

... And then repeats with each one having its own name and value.

What I want to do is get the value using the name as the search criteria.

I can't share what I have tried as I am using my phone to send this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

少年亿悲伤 2025-01-16 15:58:17

您问题的核心点是您想要获取您找到的行之后的下一行。有很多方法可以实现这一点。下一个是一个非常简单的方法:

for /F "delims=:" %%i in ('findstr /N "myname" sample.xml') do set "lines=%%i"
for /F "skip=%lines% tokens=2 delims=<>" %%v in (sample.xml) do set "value=%%v" & goto next
:next
echo %value%

当然,如果.xml 文件具有不同的格式,则此方法将不起作用...


这是一个完整的测试。这是程序 test.bat

@echo off
setlocal

for /F "delims=:" %%i in ('findstr /I /N "%~1" sample.xml') do set "lines=%%i"
for /F "skip=%lines% tokens=2 delims=<>" %%v in (sample.xml) do set "value=%%v" & goto next
:next
echo %value%

这是我在测试中使用的 sample.xml 文件:

<parameter>
<name>myName</name>
<value>Antonio</value>
</parameter>
<parameter>
<name>myDate</name>
<value>2022/02/24</value>
</parameter>
<parameter>
<name>myTime</name>
<value>12:13:14</value>
</parameter>

这是测试:

C:\Users\Antonio\Documents\test> test myName
Antonio

C:\Users\Antonio\Documents\test> test myDate
2022/02/24

C:\Users\Antonio\Documents\test> test myTime
12:13:14

The core point of your problem is that you want to get the next line after the one you located. There are a lot of methods to achieve this. The next one is a pretty simple one:

for /F "delims=:" %%i in ('findstr /N "myname" sample.xml') do set "lines=%%i"
for /F "skip=%lines% tokens=2 delims=<>" %%v in (sample.xml) do set "value=%%v" & goto next
:next
echo %value%

Of course, if the .xml file have a different format, this method will not work...


Here it is a complete test. THis is the program test.bat:

@echo off
setlocal

for /F "delims=:" %%i in ('findstr /I /N "%~1" sample.xml') do set "lines=%%i"
for /F "skip=%lines% tokens=2 delims=<>" %%v in (sample.xml) do set "value=%%v" & goto next
:next
echo %value%

This is the sample.xml file I used in the test:

<parameter>
<name>myName</name>
<value>Antonio</value>
</parameter>
<parameter>
<name>myDate</name>
<value>2022/02/24</value>
</parameter>
<parameter>
<name>myTime</name>
<value>12:13:14</value>
</parameter>

And this is the test:

C:\Users\Antonio\Documents\test> test myName
Antonio

C:\Users\Antonio\Documents\test> test myDate
2022/02/24

C:\Users\Antonio\Documents\test> test myTime
12:13:14
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文