For loop 在批处理脚本中的变量内传递for参数

For loop 在批处理脚本中的变量内传递for参数,for-loop,batch-file,For Loop,Batch File,在我的批处理文件中不起作用,请帮助 我需要的是,cmd首先解析“%%1”是1、2或其他;然后解析%vid1% 徖 我认为这是一个更大的问题,“变量中的变量”,因为这也不起作用: set vid1=asd set vid2=fgh for /L %%1 in (1,1,2) do (echo %vid%%1%) pause 我应该使用delayedexpansion: set asd=1 set vid1=qwe echo %vid%asd%% setlocal EnableDela

在我的批处理文件中不起作用,请帮助

我需要的是,cmd首先解析“%%1”是1、2或其他;然后解析
%vid1%

我认为这是一个更大的问题,“变量中的变量”,因为这也不起作用:

set vid1=asd  
set vid2=fgh
for /L %%1 in (1,1,2) do (echo %vid%%1%)
pause

我应该使用
delayedexpansion

set asd=1  
set vid1=qwe

echo %vid%asd%%
setlocal EnableDelayedExpansion

set vid1=asd
set vid2=qwe

for /L %%i in (1,1,3) do (echo !vid%%i!)

pause
也可以在没有延迟扩展的情况下执行此操作:

set asd=1  
set vid1=qwe

echo %vid%asd%%
setlocal EnableDelayedExpansion

set vid1=asd
set vid2=qwe

for /L %%i in (1,1,3) do (echo !vid%%i!)

pause
完整的脚本(因为我在尝试是否可以做一些事情,所以它很臃肿):


尝试
呼叫echo%%vid%%1%%
。作为旁注,我不建议为
for
变量使用数字,因为它很容易与传递给脚本的参数混淆。谢谢,但它不起作用。它的字面意思是“%vid1%”,而不是“asd”。是的,谢谢,这只是一个解释问题的原型。@Debrune:Squashmans的建议对我来说很好。它同时呼应
asd
fgh
。你忘了调用命令了吗?哦,非常抱歉,是的,它起作用了,非常感谢。我忘了打电话了。请看一些关于发生了什么以及为什么的解释。