Windows提示内容变量作为变量名称

时间:2015-03-05 16:24:55

标签: windows prompt

在Windows命令行中可以引用内容变量,如指针?

示例:

SET envTEST=FOO    
SET envPROD=BAR    

SET CURR=envTEST
SET data=%%CURR%% 

我想要的数据包含 FOO ,但它包含%envTEST%

由于

1 个答案:

答案 0 :(得分:2)

您需要多轮扩展。有关以下工作原因的说明,请参阅How does the Windows Command Interpreter (CMD.EXE) parse scripts?

从命令行:

call set "data=%%CURR%%"

如果cmd /v:on已启用延迟展开,则:

set "data=!%CURR%!"

在批处理脚本中:

call set "data=%%%CURR%%%

setlocal enableDelayedExpansion
...
set "data=!%CUR%!

如果在相同的代码块中设置和扩展CURR(通常在IF或FOR循环中完成),则:

setlocal enableDelayedExpansion
...
(
  set "CURR=envTEST"
  for %%V in (!CURR!) do set "data=!%%V!"
)

CALL技术很慢,所以我尽量避免它。这不是一次性使用的问题,但如果在紧密循环中使用,它可能成为一个主要问题(性能缓慢)。