In windows batch could you set a variable within a variable?
Explained:
So the %num% is within the variable.
set num=5
set cnum=test
set h1=%c%num%%
Is it possible to make the percents work like parenthesis? The output should be h1=test
Any help would be appreciated.
Your example in your question is a mess, but I think I understand what you are looking for:
@echo off
setlocal
set C1=apple
set C2=orange
set C3=banana
set num=2
:: Inefficient way without delayed expansion
:: This will be noticeably slow if used in a tight loop with many iterations
call echo %%C%num%%%
:: The remaining methods require delayed expansion
setlocal enableDelayedExpansion
:: Efficient way 1
echo(
echo !C%num%!
:: Efficient way 2 - useful if inside parenthesized block
:: where %num% will not give current value
echo(
for %%N in (!num!) do echo !C%%N!
:: Showing all values via a loop
echo(
for /l %%N in (1 1 3) do echo !C%%N!
You may be looking for the Call Set command. This sets cnum to string c1, c2, c3 etc. It changes each time %num% changes. You can then use Call Set to assign any variable (h1 for example) to the value of the variable cnum stands for.
@echo off
setlocal enabledelayedexpansion
set c5=test
set num=5
:: set cnum to string "c5"
set cnum=c%num%
:: set h1 to to the existing variable c5
call set "h1=%%%cnum%%%"
echo %h1%
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With