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.
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.
SETLOCAL EnableDelayedExpansion
and ENDLOCAL
;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.
Comments