在Windows命令行中可以引用内容变量,如指针?
示例:
SET envTEST=FOO
SET envPROD=BAR
SET CURR=envTEST
SET data=%%CURR%%
我想要的数据包含 FOO ,但它包含%envTEST%
由于
答案 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技术很慢,所以我尽量避免它。这不是一次性使用的问题,但如果在紧密循环中使用,它可能成为一个主要问题(性能缓慢)。