堆叠 Windows 环境变量

堆叠 Windows 环境变量

是否可以“堆叠”Windows 环境变量,例如,

"RUBY_PATH" = "C\ruby\bin"
"PYTHON_PATH" = "C:\python332"
"PROGRAMMING_PATH" = "%RUBY_PATH%;%PYTHON_PATH%"
"Path" = ...;%PROGRAMMING_PATH%'"

我可以在 Linux 节点上执行此操作,但到目前为止,在 Windows 节点上还没有成功。我做错了什么吗?

答案1

我不明白为什么不能,Windows 开箱即用:

在此处输入图片描述

我不能说我会经常使用它,因为有搞错路径的风险,而且它的界面不太友好。但看起来是可能的。

答案2

您可以从命令行轻松完成此操作:

SET RUBY_PATH=C:\Ruby\Bin
SET PYTHON_PATH=C:\Python332
SET PROGRAMMING_PATH=%RUBY_PATH%;%PYTHON_PATH%
SET PATH=%PATH%;%PROGRAMMING_PATH%

如果您直接在注册表中设置这些值,则需要使用REG_EXPAND_SZ需要扩展的数据类型。即包含其他变量的变量。

在此处输入图片描述

答案3

cmd或批处理文件:

set

wmic

wmic ENVIRONMENT get Name, VariableValue, UserName | more

或者

wmic ENVIRONMENT get * | more

powershell

powershell gci env: | more

工作场所安全与健康:

ReadEnv2.vbs | more

读取环境2.vbs:

Set WshShell = CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment
WScript.Echo "WINDIR=" & WshEnv.Item("WINDIR")  & vbCrLf &_
                                                  vbCrLf

Set WshShell = CreateObject("WScript.Shell")
WScript.Echo "Environment System:"              & vbCrLf &_ 
"..............................................."
For Each IEnv In WshShell.Environment("System")
    WScript.Echo IEnv
Next

WScript.Echo vbCrLf & "Environment User:"       & vbCrLf &_ 
"..............................................."
For Each IEnv In WshShell.Environment("User")
    WScript.Echo IEnv
Next

WScript.Echo vbCrLf & "Environment Volatile:"   & vbCrLf &_ 
"..............................................."
For Each IEnv In WshShell.Environment("Volatile")
    WScript.Echo IEnv
Next
WScript.Echo vbCrLf & "Environment Process:"    & vbCrLf &_ 
"..............................................."
For Each IEnv In WshShell.Environment("Process")
    WScript.Echo IEnv
Next

答案4

这似乎取决于您如何设置环境变量。在命令提示符中,您可以执行以下操作:

set a=C:
set b=%a%\Users
set c=%b%\Thomas
cd %c%

因为环境变量会立即扩展。

但你不能这么做:

set c=%b%\Thomas
set b=%a%\Users
set a=C:
cd %c%

另一方面,如果您通过环境变量对话框定义环境变量,然后启动命令提示符,它就会起作用。在 C# 程序中,当在该对话框中设置,然后通过以下方式查询时,它也起作用

string c = Environment.GetEnvironmentVariable("c");

相关内容