Непонятно, о чем вы спрашиваете, посмотрите это на ваших примерах
@Echo off & SetLocal EnableDelayedExpansion
for /l %%i in (1,1,5) Do @Set "a[%%i]=Var%%i"
Set a[
:: Вернется
a[1]=Var1
a[2]=Var2
a[3]=Var3
a[4]=Var4
a[5]=Var5
:: Если вы установите
Set i=3
Set !a[%i%]!=value
:: Это установит переменную, на которую ссылается %a[3]%
, на value
set Var
:: возвращает
Var3=value
Также ваша вторая команда будет косвенно устанавливать переменную, на которую указывает %comm%
, значение value
Set comm=Var1
Set %comm%=value
Set %comm%
:: возвращает
Var1=value