windows批处理命令嵌套变量
我需要使用嵌套变量来创建基于环境变量的文件夹 假设我有下面列出的变量:windows批处理命令嵌套变量,windows,batch-file,cmd,nested,environment-variables,Windows,Batch File,Cmd,Nested,Environment Variables,我需要使用嵌套变量来创建基于环境变量的文件夹 假设我有下面列出的变量: %ABC_ASIA_LOCATION% %ABC_EUROPE_LOCATION% %ABC_US_LOCATION% 我想把国家作为变量传递,比如%ABC\u%country%\u LOCATION% 如何在Windows中利用批处理脚本实现这一点 您必须将每个变量包含在%中: set "ABC=ABC" set "COUNTRY=EUROPE set "LOCATION=MUNICH echo %ABC%_%COUN
%ABC_ASIA_LOCATION%
%ABC_EUROPE_LOCATION%
%ABC_US_LOCATION%
我想把国家作为变量传递,比如%ABC\u%country%\u LOCATION%
如何在Windows中利用批处理脚本实现这一点 您必须将每个变量包含在%
中:
set "ABC=ABC"
set "COUNTRY=EUROPE
set "LOCATION=MUNICH
echo %ABC%_%COUNTRY%_%LOCATION%
结果:ABC欧洲慕尼黑
或者,如果您只想将国家
作为一个变量,请将其余变量保持不变:
echo ABC_%COUNTRY%_LOCATION
结果:ABC\u欧洲\u位置
或者,如果您希望整个内容是一个变量(包含另一个变量的变量名),则必须使用:
这给了你:德国南部的一个城镇
注意:setlocal
在批处理文件之外不起作用,因此延迟扩展只起作用:-在批处理文件中
-当命令提示符在启用延迟扩展的情况下启动时(
cmd/v:on
)(默认情况下,命令提示符在禁用延迟扩展的情况下运行)也许您应该强调,setlocal
仅在批处理文件中工作,并且直接在命令行上使用延迟扩展,首先需要发出cmd/v
。@JosephQuinsey:是的,可能对初学者有帮助。(这些东西深深地烙进了我的大脑,以至于很难记住,其他人可能不知道它们…)我补充了一条说明。这个链接后面的信息与嵌套没有直接关系,但如果在以后的阶段需要,可以帮助进行变量值替换。
setlocal enabledelayedexpansion
set country=EUROPE
set "ABC_EUROPE_LOCATION=a town in southern Germany"
echo !ABC_%country%_LOCATION!