Cmd - 以变量名获取变量

Jam*_*mie 3 command cmd batch-file set

我有一个问题variable in variable(代码如下):

set a=1
set b=a
echo %%b%%
Run Code Online (Sandbox Code Playgroud)

预期的结果是:

1
Run Code Online (Sandbox Code Playgroud)

作为a被分配给变量b1分配给变量a.

另外,还有另一种情况:

set b=a
set a1=100
set c=1
call set d=%a%c%%
echo %d%
Run Code Online (Sandbox Code Playgroud)

我希望程序先打开%c%1,然后转%a1%100.
预期的产出是100.

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

npo*_*aka 5

set a=1
set b=a
call echo %%%b%%%
Run Code Online (Sandbox Code Playgroud)

这将更快地工作:

@echo off
set a=1
set b=a
setlocal enableDelayedExpansion
echo !%b%!
endlocal
Run Code Online (Sandbox Code Playgroud)

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

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