You might think that the following BAT script would print out the word right:
set answer=wrong
if "a" == "a" (
set answer=right
echo %answer%
)
... but it actually prints out wrong. The reason is that the BAT processor expands the variable answer when it is read, not when it is executed. To work around this problem, you must use an extension, thus:
setlocal enabledelayedexpansion
set answer=wrong
if "a" == "a" (
set answer=right
echo !answer!
)
Note the use of exclamation marks instead of percent signs to delimit the delayed expansion of the variable answer.