Cmd - 以变量名获取变量

时间:2014-01-22 09:30:41

标签: batch-file cmd command set

我遇到关于variable in variable的问题(代码如下):

set a=1
set b=a
echo %%b%%

预期结果是:

1

a分配给变量b,将1分配给变量a

另外,还有另一种情况:

set b=a
set a1=100
set c=1
call set d=%a%c%%
echo %d%

我希望程序首先将%c%转为1,然后将%a1%转为100
预期输出为100

完成此任务的最简单方法是什么?

2 个答案:

答案 0 :(得分:5)

set a=1
set b=a
call echo %%%b%%%

这会更快地运作:

@echo off
set a=1
set b=a
setlocal enableDelayedExpansion
echo !%b%!
endlocal

如果您需要在括号上下文中执行此操作(例如iffor ...):

@echo off
set a=1
set b=a
setlocal enableDelayedExpansion
(
 for /f %%v in ("%b%") do echo !%%~v!
)
endlocal

答案 1 :(得分:1)

喜欢变量x%abc%,

echo x%abc%>a.a
set /p temp=<a.a
call echo %%temp%%>a.a
set /p temp=<a.a
set temp

这就是全部!