arraysvariablesbatch-filedynamicnames

Batch Script - Create Dynamic Variable Names or Array in For Loop


I would like to ask you if you can advise.

I don't know if it is possible to create dynamic variable names in batch or array or something like this. For example set c=0 before for loop and then set c = c+1 inside for loop and use this number to create dynamic variable name inside for loop e.g.: set entry%c% = 'somestring'

and afterwards use these numbered variables to print output outside for loop e.g.: echo %entry1% echo %entry2%

Example:

@echo off

set /a c=1

for %%i in (list.txt) do (

set /a c=c+1
set entry%c% = %%i

)

echo %entry1%
echo %entry2%

Thanks for help.


Solution

  • I'd use

    for /f "tokens=1*delims=[]" %%a in ('find /n /v "" list.txt') do set "entry%%a=%%b"
    

    but a word of warning about

    set entry%c% = %%i
    

    Batch is sensitive to spaces in a SET statement. Had this worked, it would set a variable named "entry1Space" to a value of "Spacethefirstlineofthefile".

    The set "var=value" syntax I've used ensures that any trailing spaces on the batch line are not included in the value assigned to var.