使用索引变量的Echo批处理文件数组?

Dss*_*Dss 4 arrays batch-file echo

如果我有一个批处理文件,我正在设置一个索引为变量的数组

@echo off
SET x=1
SET myVar[%x%]=happy
Run Code Online (Sandbox Code Playgroud)

我如何回应这一点以获得"快乐"?

我试过了

ECHO %myVar[%x%]%
ECHO %%myVar[%x%]%%
ECHO myVar[%x%]
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用.

如果我使用索引的实际数字,它工作正常

ECHO %myVar[1]%
Run Code Online (Sandbox Code Playgroud)

但是如果索引号也是变量则不行

npo*_*aka 8

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
Run Code Online (Sandbox Code Playgroud)

我建议你使用

setlocal enableDelayedExpansion
echo !myvar[%x%]!
endlocal
Run Code Online (Sandbox Code Playgroud)

因为这是一种表现最好的方式


Mad*_*ist 5

!批处理中有一个特殊字符可以处理您的情况.使用echo !myVar[%x%]!,如何在批处理中返回数组元素?.!意味着延迟扩张.变量myVar将不会扩展,直到之后%x%,产生你想要的表达式.