如果我有一个批处理文件,并且我正在设置一个索引为变量的数组
@echo off
SET x=1
SET myVar[%x%]=happy
我如何回应这一点以获得“快乐”?
我试过
ECHO %myVar[%x%]%
ECHO %%myVar[%x%]%%
ECHO myVar[%x%]
但它们都不起作用。
如果我使用索引的实际数字
,它可以正常工作ECHO %myVar[1]%
但如果索引号也是变量
则不行答案 0 :(得分:7)
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
我建议你使用
setlocal enableDelayedExpansion
echo !myvar[%x%]!
endlocal
因为这是表现最佳的方式
答案 1 :(得分:5)
批处理中有一个特殊的!
字符来处理您的情况。使用How to return an element of an array in Batch?中的echo !myVar[%x%]!
。 !
意味着延迟扩张。变量myVar
在%x%
之后才会展开,从而产生您想要的表达式。
答案 2 :(得分:2)
你可以这样做的一种方法是使用
call echo %%myVar[%x%]%%
如果使用双倍百分比,调用允许您将变量放在通常不起作用的位置