Batch file 从文本文件中提取子字符串

Batch file 从文本文件中提取子字符串,batch-file,Batch File,我尝试制作一个批处理脚本,该脚本可以在批处理中提取两个xml标记之间的值 我通过执行curl cmd获得xml文件,并将其重定向到临时文件: curl -X POST -H "key:value" -i http://mywebsite/ask -d "<xml body>" > tmp curl-X POST-H“键:值”-ihttp://mywebsite/ask -d“>tmp 然后,我像这样搜索我的标签: findstr "<abc:id>" tmp

我尝试制作一个批处理脚本,该脚本可以在批处理中提取两个xml标记之间的值

我通过执行curl cmd获得xml文件,并将其重定向到临时文件:

curl -X POST -H "key:value" -i http://mywebsite/ask -d "<xml body>" > tmp
curl-X POST-H“键:值”-ihttp://mywebsite/ask -d“>tmp
然后,我像这样搜索我的标签:

findstr "<abc:id>" tmp
findstr“tmp
我可以在cmd控制台中看到正确的行显示:

<abc:id>the_id_that_i_want</abc:id>
我想要的\u id\u
但在那之后,我就拿不到我的身份证了

我已经尝试将“findstr”结果转发到一个文件,然后读取它,但没有成功

我还尝试使用以下脚本:

for /F "delims=" %%i in ('findstr "<abc:id>" tmp') do set var=%%i
echo %var%
for/F“delims=“%%i in('findstr”“tmp')do set var=%%i
回显%var%
但我的脚本在echo语句中崩溃了

那么,如何提取我的id并将其设置在变量中?

for/F“tokens=2delims=”。。。
for /F "tokens=2delims=<>"...
接受命令

<abc:id>the_id_that_i_want</abc:id>
我想要的\u id\u
并使用
作为分隔符对其进行标记

第一个标记是
abc:id
,第二个标记是想要的
和第三个
/abc:id

所以你需要选择第二个


echo
崩溃,因为正在被
echo
ed的字符串包含重定向器(
一件事是编写命令:
setlocal enabledelayedexpansion
。否则,“for”无法正确运行

另一件事是olso不使用变量与
%
标记,而是使用
标记。这允许将变量文本与重定向器(
tmp)一起使用
延迟扩展
对于/F“delims=“%%i in('findstr”“tmp'),do set var=%%i
对于/F“tokens=1,2 delims=“%%a in(“!var!”)请设置var2=%%b
德尔tmp
回声Id:!var2!

Just…why?为什么要尝试用批处理文件解析XML?Windows中有几种本机脚本语言,它们有解析XML文件的方法,而不必用批处理文件强制执行。Jscript、Vbscript和Powershell。Microsoft还创建了两个可以解析XML文件的实用程序。Log Parser和MSXSL。
curl -X POST -H "key:value" -i http://mywebsite/ask -d "<xml body>" > tmp

setlocal enabledelayedexpansion

for /F "delims=" %%i in ('findstr "<abc:id>" tmp') do set var=%%i

for /F "tokens=1,2 delims=<abc:id>" %%a in ("!var!") do set var2=%%b

DEL tmp

ECHO Id : !var2!