In normal cases you can access variable value by enclosing its name with %
:
set var=a
echo %var%
As when there is composition of commands with &
or a few commands are put in brackets the set
will take effect after all of them are executed.Then you need delayed expansion to access your variable and to enclose it with !
setlocal enableDelayedExpansion
if exist c:\ (
set var2=a
echo !var2!
)
Take a more close look at SET command.
in for loops you have a special variables that works only in context of for command - a tokens that change its values on each iteration of the loop:
for /f "delims=" %%# in ('set') do echo %%#
here are the letters that you can use as tokens.And be careful - you need to use double %
in a script and a single in command prompt.
There's one more type of variables that has a %
only at the beginning - arguments passed to the script (or a subroutine) - accessible with numbers (or rather digits) - from %0
to %9
where %0
is the name of the script itself.