windows batch命令嵌套变量

时间:2017-09-06 05:17:44

标签: windows batch-file cmd nested environment-variables

我需要使用嵌套变量来创建基于环境变量的文件夹。

假设我有以下变量:

%ABC_ASIA_LOCATION% 
%ABC_EUROPE_LOCATION%
%ABC_US_LOCATION%

我希望将国家/地区作为变量传递,例如%ABC_%COUNTRY%_LOCATION%

如何在Windows中使用批处理脚本实现此目的?

1 个答案:

答案 0 :(得分:1)

您必须将每个变量括在%中:

set "ABC=ABC"
set "COUNTRY=EUROPE
set "LOCATION=MUNICH
echo %ABC%_%COUNTRY%_%LOCATION%

结果:ABC_EUROPE_MUNICH

或者,如果您只想将Country作为变量,请保持其余部分:

echo ABC_%COUNTRY%_LOCATION

结果:ABC_EUROPE_LOCATION

或者如果你想让整个事物变成一个变量(一个包含另一个变量的变量名),你必须使用delayed expansion

setlocal enabledelayedexpansion
set country=EUROPE
set "ABC_EUROPE_LOCATION=a town in southern Germany"
echo !ABC_%country%_LOCATION!

为您提供:a town in southern Germany

注意:setlocal在批量文件之外没有任何影响,因此延迟扩展只能起作用:
- 在批文件中 - 启动延迟扩展时启动命令提示符(cmd /v:on)(默认情况下,命令提示符以延迟扩展 dis 启用运行)