有没有人成功将xidel输出变量导出到cmd?

时间:2014-02-21 21:27:04

标签: xml windows cmd

我正在使用xidel从XML文件中的特定标记中提取值,并将其作为var导出到cmd。但是,这些变量似乎根本没有出口。

示例我正在使用:

xidel“in.xml”-e“{var1:= text()}” - output-format cmd

我得到了输出:

**** Retrieving:in.xml ****  
**** Processing: in.xml ****  
** Current variable state: **  
SET var1=1234  

(其中1234包含在in.xml中) 但是var1未设置为命令提示符窗口中的变量。 这是在Windows 7计算机上。任何见解都会非常感激 - 我不知道我是否错误地使用了xidel,或者cmd var输出有错误。

3 个答案:

答案 0 :(得分:1)

不,你没有正确使用Xidel 首先,在cmd中使Xidel变量可用的唯一方法是使用FOR循环 其次,在这种情况下,你不应该用大括号括起你的查询。这些用于创建JSON,等等 第三,正式的--output-format=cmd,但我猜贝尼托 - 西德尔的作者 - 对那些忘记=的人感到宽容,因为--output-format cmd似乎有效同样。如果您使用=,请不要忘记使用^转义它,因为it's a special character

所以你的FOR循环看起来像这样:

FOR /F "delims=" %%A IN ('xidel.exe -s "in.xml" -e "var1:=..." --output-format^=cmd') DO %%A

答案 1 :(得分:0)

了解其工作原理

@echo off
for /f "delims=" %%a in ('xidel "in.xml" -e "{var1:=text()}" --output-format cmd ^|find /i "set " ') do %%a
set var1
pause

答案 2 :(得分:0)

对于一个或多个变量:

for /f "delims=" %%a in ('xidel "in.xml" -s --output-format=cmd -e "{var1:=...}" -e "{var2:=...}" -e "{var3:=...}"') do %%a

echo %var1%
echo %var2%
echo %var3%

pause