Windows批处理:如何分配具有动态名称的变量?

Windows批处理:如何分配具有动态名称的变量?,windows,batch-file,Windows,Batch File,请参阅下面的代码片段。我想为一个新变量指定一个动态名称。我尝试了以下方法: @echo off setlocal enableDelayedExpansion set my_dir_1=C:\temp1 set my_dir_2=C:\temp2 for %%d in (1 2) do ( echo my_dir_%%d: !my_dir_%%d! set new_var=!my_dir_%%d! echo === %new_var% === ) endlocal

请参阅下面的代码片段。我想为一个新变量指定一个动态名称。我尝试了以下方法:

@echo off
setlocal enableDelayedExpansion

set my_dir_1=C:\temp1
set my_dir_2=C:\temp2
for %%d in (1 2) do (
    echo my_dir_%%d: !my_dir_%%d!
    set new_var=!my_dir_%%d!
    echo === %new_var% ===
)

endlocal
第一个“echo”将输出我想要的内容:

my_dir_1: C:\temp1
===  ===
my_dir_2: C:\temp2
===  ===
但正如您在第二个“echo”中看到的,我的新变量“new_var”是空的。 我怎样才能解决这个问题?谢谢

更换这个

echo === %new_var% ===
为此:

echo === !new_var! ===