2014-02-21 16 views
0

我使用xidel從XML文件中的特定標記提取值,並將其作爲var導出到cmd。但是,這些變數似乎根本沒有出口。有沒有人成功將xidel output vars導出到cmd?

例如我使用:

xidel 「in.xml」 -e 「{VAR1:=文本()}」 --output格式CMD

我得到的輸出:

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

(其中1234包含在in.xml中) 但是,var1沒有設置爲從命令提示符窗口中可用的變量。 這是在Windows 7機器上。任何洞察力將不勝感激 - 我不知道我是否錯誤地使用xidel或有錯誤的cmd var輸出。

回答

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 
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 
+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 
相關問題