我使用xidel从XML文件中的特定标记中提取一个值,并将其作为var导出到cmd。但是,var似乎根本不会被导出。
我正在使用的示例:
xidel "in.xml“-e "{var1:=text()}”--输出格式命令
我得到了输出:
**** Retrieving:in.xml ****
**** Processing: in.xml ****
** Current variable state: **
SET var1=1234 (其中1234包含在in.xml中),但var1未设置为可从命令提示符窗口中使用的变量。这是在Windows7机器上。我不知道我是不是不正确地使用了xidel,还是cmd var输出有一个bug。
发布于 2016-07-27 04:48:10
不,您没有正确使用Xidel。
首先,使Xidel变量在cmd中可用的唯一方法是通过使用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发布于 2014-02-22 17:36:27
看看它是如何工作的
@echo off
for /f "delims=" %%a in ('xidel "in.xml" -e "{var1:=text()}" --output-format cmd ^|find /i "set " ') do %%a
set var1
pause发布于 2016-07-26 22:04:36
对于一个或多个变量:
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%
pausehttps://stackoverflow.com/questions/21945525
复制相似问题