Echo batch file arrays using a variable for the index?

后端 未结 3 1991
陌清茗
陌清茗 2020-12-20 23:42

If I have a batch file and I am setting arrays with an index that is a variable

@echo off
SET x=1
SET myVar[%x%]=happy

How do I echo that t

相关标签:
3条回答
  • 2020-12-21 00:25

    There is a special ! character in batch to deal with your situation. Use echo !myVar[%x%]!, from How to return an element of an array in Batch?. ! means delayed expansion. The variable myVar will not get expanded until after %x% is, yielding the expression you want.

    0 讨论(0)
  • 2020-12-21 00:26
    SET x=1
    SET myVar[%x%]=happy
    
    call echo %%myvar[%x%]%%
    set myvar[%x%]
    for /f "tokens=2* delims==" %%v in ('set myvar[%x%]')  do @echo %%v
    setlocal enableDelayedExpansion
    echo !myvar[%x%]!
    endlocal
    

    I would recommend you to use

    setlocal enableDelayedExpansion
    echo !myvar[%x%]!
    endlocal
    

    as it is a best performing way

    0 讨论(0)
  • 2020-12-21 00:32

    one way you can do this is to use

    call echo %%myVar[%x%]%%
    

    call lets you put variables in places where they wouldn't normally work, if you use the double percents

    0 讨论(0)
提交回复
热议问题