I'm using xidel to extract a value from a specific tag in a XML file, and export it as a var to cmd. However, the vars don't seem to be exported at all.
example I'm using:
xidel "in.xml" -e "{var1:=text()}" --output-format cmd
I get the output:
**** Retrieving:in.xml ****
**** Processing: in.xml ****
** Current variable state: **
SET var1=1234
(where 1234 is contained in in.xml)
but var1 is not set as a variable available from the command prompt window.
This is on a Windows 7 machine. Any insight would be much appreciated - I don't know if I'm using xidel incorrectly or there's a bug with cmd var output.
No, you're not using Xidel correctly.
First of all, the only way to make Xidel variables available in cmd is through the use of a FOR-loop.
Secondly, in this situation you shouldn't enclose your query with curly brackets. Those are meant for creating JSONs, amongst other things.
And thirdly, officially it's --output-format=cmd
, but I guess Benito - Xidel's author - has been forgiving for people who forget the =
, as --output-format cmd
seems to work as well. Should you use the =
, don't forget to escape it with a ^
, because it's a special character.
So your FOR-loop would then look like this:
FOR /F "delims=" %%A IN ('xidel.exe -s "in.xml" -e "var1:=..." --output-format^=cmd') DO %%A
See how this works
@echo off
for /f "delims=" %%a in ('xidel "in.xml" -e "{var1:=text()}" --output-format cmd ^|find /i "set " ') do %%a
set var1
pause
For one or more variables:
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