Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
windows批处理命令嵌套变量_Windows_Batch File_Cmd_Nested_Environment Variables - Fatal编程技术网

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!