Take a nice long look at for /? the next time you open the command prompt...you may just learn something.
In the mean time, here is what you wanted:
%variables% are used with the set command are are called variables. Whatever their value is replaces it.
%%a is not an actual variable. It is a token used in for loops. It only substitutes the value while in a for loop. It can't be changed manually, like a regular variable.
For example, both these codes will do the exact same thing, but they are different as you can see.
@echo off
:loop
set /a num+=1
echo %num%
if %num%==10 goto stop
goto loop
:stop
pause
@echo off
for /l %%a in (1,1,10) do echo %%a
pause