预定义环境变量可以引用动态创建的环境变量吗?

时间:2016-11-03 15:09:18

标签: windows

我想创建一个持久的环境变量,它引用在命令提示符下创建的环境变量。这显示了我正在尝试做的事情:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\testuser>echo %HTTP_PROXY%
http://%user%:test@%proxyip%:8080

C:\Users\testuser>set user=testuser

C:\Users\testuser>set password=testpass

C:\Users\testuser>set proxyip=10.20.10.100

C:\Users\testuser>echo %HTTP_PROXY%
http://%user%:test@%proxyip%:8080

我期待打印最终的echo语句

http://testuser:testpass@10.20.10.100:8080

有没有办法让这成为可能?

1 个答案:

答案 0 :(得分:1)

不,那是不可能的。环境变量不会递归扩展。

您可以做的是创建一个批处理脚本来为您设置HTTP_PROXY。它甚至可以提示您输入用户名,密码和IP地址,以便使用set保存您。

(如果您需要批处理脚本由于某种原因从环境中获取模板字符串,而不是使用硬编码字符串,this answer说明了如何执行此操作。)

脚注:

持久性环境变量可以引用其他持久性环境变量,但有一些限制。请参阅herehere

但是,这仅在为新进程构建环境块时发生,而不是在进程运行时发生。 (如果新进程从其父进程继承其环境,只有在构建全新的环境块时才会发生这种情况。)