在Windows CMD中扩展var中的var

在Windows CMD中扩展var中的var,cmd,Cmd,我在变量(例如,变量a)中有类似于%SystemRoot%\blahblahblah的smth。 但是回声!a将返回%SystemRoot%\blahblahblah(不展开%SystemRoot%)。如何展开它?您可以使用调用子例程的技巧,使变量展开两次: @Echo Off set a=%%SystemRoot%%\blahblahblah call :reparse set b=%a% echo value of a: %a% echo value of b: %b% goto :EO

我在变量(例如,
变量a
)中有类似于
%SystemRoot%\blahblahblah
的smth。
但是回声!a将返回
%SystemRoot%\blahblahblah
(不展开
%SystemRoot%
)。如何展开它?

您可以使用调用子例程的技巧,使变量展开两次:

@Echo Off
set a=%%SystemRoot%%\blahblahblah
call :reparse set b=%a%

echo value of a: %a%
echo value of b: %b%

goto :EOF

:reparse
%*
goto :EOF
:repasse
子例程只执行其所有参数。第一次扩展发生在执行调用时,第二次扩展发生在%*被解释为
set b=%SystemRoot%\blahblahblah