我正在使用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输出有错误。
答案 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