Batch file 如何使用batch和assign to variable匹配XML文件中的字符串?

Batch file 如何使用batch和assign to variable匹配XML文件中的字符串?,batch-file,cmd,Batch File,Cmd,我有一个由第三方工具生成的XML文件,其格式为 <?xml version="1.0" encoding="UTF-8"?><ROOT test_count="22" test_fail_count="1" test_pass_count="21".......</ROOT> 基本上,我试图从XML文件中获取test_count22、test_fail_count1和test_pass_count21的值 关于如何实现这一点有什么想法吗?@ECHO Off SET

我有一个由第三方工具生成的XML文件,其格式为

<?xml version="1.0" encoding="UTF-8"?><ROOT test_count="22" test_fail_count="1" test_pass_count="21".......</ROOT>
基本上,我试图从XML文件中获取test_count22、test_fail_count1和test_pass_count21的值

关于如何实现这一点有什么想法吗?

@ECHO Off SETLOCAL 设置sourcedir=U:\sourcedir 设置文件名1=%sourcedir%\q42057260.txt 设置测试计数= 设置testfailcount= 对于/f usebackqdelims=%%a,在%filename1%DO中 设置xmlline=%%a 呼叫:进程 回显测试计数=%testcount%测试失败计数=%testfailcount% 后藤:EOF :进程 ::处理笨拙的角色 设置xmlline=%xmlline:?=% 设置xmlline=%xmlline:>=%
SET-xmlline=%xmlline:如果Report.xml的结构和顺序为常量,则可以执行命令行

for /f "tokens=5,6 delims=<> " %A in (Report.xml) Do @Set %A&Set %B

为什么它必须是一个批处理文件?不幸的是,在我的情况下,这是一个要求,即它不能是*.SH,但是如果Perl或其他脚本语言中有一个好的选项,我可能会考虑它。难道它不是JavaScript吗?据我记忆所及,Windows曾经有过这种脚本主机。这不是还在吗?是的,看起来WSH从Win98开始就可以使用了,Win10仍然拥有它:出于某种原因,代码没有经过for循环。它退出并打印测试计数=测试失败计数=批处理语法非常具体。最好是剪贴。如果要在:select下的新行上添加一行echo%%~1,那么您应该会看到依次检查提供的每个元素的例程。这很有效。这是我的错,谢谢!由于某种原因,代码不再工作。我复制粘贴到记事本++中,这可能是问题吗?@mofi:options参数仅表示字符串包含一个或多个关键字-尽管示例使用了空格分隔符。cmd显示查看选项是否包含在选项字符串中,在检查下一个选项之前删除从字符串中找到的任何选项。因此delims=usebackq是有效的;首先检测并消除usebackq,并将其用作delims。我习惯于最后使用delims选项来避免打字错误。delims=usebackq&delims=usebackq的行为会有所不同吗?我认为空格是可选的&我同意它更清晰,但更多的是打字。
for /f "tokens=5,6 delims=<> " %A in (Report.xml) Do @Set %A&Set %B
> set test
test_count="22"
test_fail_count="1"