Variable name from string and number in CMD FOR loop?

Peter Maly

I have a range of variables, which stores strings. These variables have index number that increments through FOR command.

I want to list all values from all these variables, which index numbers are generated from FOR definition (can be next time automated +1 or similar subfunction).

setlocal EnableDelayedExpansion
set dir01a=text 1
set dir02a=text 2
set dir03a=text 3
for %G in (01 02 03) do (echo !dir%Ga!)

it outputs this:

!dir01a!
!dir02a!
!dir03a!

and I want this:

text 1
text 2
text 3

I cannot find any solution how to let the echo treat the !dir%Ga! like variable name and not text together.

Any idea please ?

If used in batch I would like to add one % more to the %G. Thank You.

JosefZ

Your batch script works:

@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion
set dir01a=text 1
set dir02a=text 2
set dir03a=text 3
for %%G in (01 02 03) do echo dir%%Ga =to= !dir%%Ga!

However, SETLOCAL command does not affect current cmd instance, you need to create new one, see cmd /? and update below.

  • batch script: command pair SETLOCAL EnableDelayedExpansion and ENDLOCAL;
  • command line: corresponding command pair CMD /V:ON /K and EXIT respectively.

Copy & paste next code snippet to an open cmd window:

ECHO OFF
set dir01a=text 1
set dir02a=text 2
set dir03a=text 3
for %G in (01 02 03) do echo dir%Ga =to= !dir%Ga!
cmd /E:ON /V:ON /C for %G in (01 02 03) do @echo dir%Ga =to= !dir%Ga!
ECHO ON >NUL

Output:

==> ECHO OFF
set dir01a=text 1
set dir02a=text 2
set dir03a=text 3
for %G in (01 02 03) do echo dir%Ga =to= !dir%Ga!
dir01a =to= !dir01a!
dir02a =to= !dir02a!
dir03a =to= !dir03a!
cmd /E:ON /V:ON /C for %G in (01 02 03) do @echo dir%Ga =to= !dir%Ga!
dir01a =to= text 1
dir02a =to= text 2
dir03a =to= text 3
ECHO ON >NUL

Update: copy & paste next code snippet to an open cmd window (note opportune prompt and === command prefix for better output readability):

prompt $Q$Q$G$S
echo OFF
=== set "var=OLD_value_d"
=== SETLOCAL EnableDelayedExpansion
=== set "var=NEW_value_d" & echo default expansion %var% !var! & set var
=== echo default expansion %var% !var!
=== ENDLOCAL
=== echo default expansion %var% !var!

=== CMD /V:ON /K
echo OFF
=== set "var=OLD_value_E"
=== set "var=NEW_value_E" & echo Delayed expansion %var% !var! & set var
=== echo Delayed expansion %var% !var!
=== EXIT

=== echo default expansion %var% !var!
=== echo ON >NUL
prompt

Output:

==> prompt $Q$Q$G$S

==> echo OFF
=== set "var=OLD_value_d"
=== SETLOCAL EnableDelayedExpansion
=== set "var=NEW_value_d" & echo default expansion %var% !var! & set var
default expansion OLD_value_d !var!
var=NEW_value_d
=== echo default expansion %var% !var!
default expansion NEW_value_d !var!
=== ENDLOCAL
=== echo default expansion %var% !var!
default expansion NEW_value_d !var!

=== CMD /V:ON /K
==> echo OFF
=== set "var=OLD_value_E"
=== set "var=NEW_value_E" & echo Delayed expansion %var% !var! & set var
Delayed expansion OLD_value_E NEW_value_E
var=NEW_value_E
=== echo Delayed expansion %var% !var!
Delayed expansion NEW_value_E NEW_value_E
=== EXIT

=== echo default expansion %var% !var!
default expansion NEW_value_d !var!
=== echo ON >NUL

==> prompt

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

To separate the directory string from a variable in cmd

From Dev

Name variable from string in Dash

From Dev

How to turn a string into a variable name within a loop?

From Dev

Define a variable by concatenating a string with a number in a loop of Stata

From Dev

Full name to variable in CMD

From Dev

CMD Variable name restrictions?

From Dev

Variable name from json combined with counting number

From Dev

Get name of function from loop variable

From Dev

Echo variable name, not value, from for loop in bash?

From Dev

Cmd - get variable in variable name

From Dev

Plot multiple graphs from loop with string name

From Dev

Create variable name from two string in python

From Dev

How to instantiate variable with name from a string?

From Dev

Getting variable name from a string for ArrayList

From Dev

Column Name from string variable linq query

From Dev

Unable to assign String from variable as sheet name

From Dev

Is it possible to change a variable from String to Number in Javascript?

From Dev

Get last character of a string from a variable Windows NT batch CMD

From Dev

SASS : compare variable name within @each loop with a string

From Dev

Set new variable with name of string from existing variable

From Dev

CMD script - Truncate string in a for loop

From Dev

Illegal Variable Name/Number

From Dev

Adding number to variable name

From Dev

Illegal Variable Name/Number

From Dev

Increment a variable name in for loop

From Dev

Func name as variable in loop

From Dev

echo variable name in for loop

From Dev

Loop an UIElement variable name

From Dev

R - variable name in loop