Java 查询环境变量而不对其求值

Java 查询环境变量而不对其求值,java,groovy,cmd,Java,Groovy,Cmd,我想查询Path环境变量,而不计算它包含的其他变量 例如 我想查询路径并获取 c:\jkl;%变量1%;%变量2%;%变量3%;%爪哇之家% 不是 c:\jkl;c:\abc;c:\def;c:\ghi;c:\java 原因是什么 在我的groovy脚本(正在执行shell命令)中,我想检查路径中是否设置了%variable1%(或其值)。如果没有,我想添加它。我应该做以下正确的事情吗 setx path "%path%;%variable1%" /m 事实上没有,因为这将进入路径 c:\jk

我想查询Path环境变量,而不计算它包含的其他变量

例如

我想查询路径并获取

c:\jkl;%变量1%;%变量2%;%变量3%;%爪哇之家%

不是

c:\jkl;c:\abc;c:\def;c:\ghi;c:\java

原因是什么

在我的groovy脚本(正在执行shell命令)中,我想检查路径中是否设置了%variable1%(或其值)。如果没有,我想添加它。我应该做以下正确的事情吗

setx path "%path%;%variable1%" /m
事实上没有,因为这将进入路径 c:\jkl;c:\def;c:\ghi;c:\java;%可变1%

未来对JAVA_HOME的更改将不再反映在Path中。Path中与我的程序无关的任何其他引用变量都将被更改。很快,这可能不是问题,但如果其他人决定更改某些内容,并希望路径反映他们的更改,则这可能会影响其他人运行的其他程序

目前我正试图在windows中解决这个问题,但在某个时候也必须在linux中做类似的事情。
我目前正在使用Win 7,但它可以运行多种操作系统。

我认为这是不可能的。设置变量后,它将展开。您可能必须查看Windows上的注册表才能获得未扩展的值,并且在*nix上会非常丢失,因为您不知道它是在哪里设置的。实际上你也不知道,在Windows中,有人可以打开一个shell,将变量设置为其他路径,然后启动你的程序,那么注册表值就会过时。

一旦分配了路径变量,它不知道它是由这些其他变量生成的。请不要使用setx.exe使用当前的
%PATH%
值修改
路径。Windows将
PATH
分为用户和机器组件。通过将setx.exe与
%PATH%
一起使用,您已经破坏了这种区别,并将事情搞得一团糟。@eryksun是的,我知道这一点,但愿意接受is,因为PATH的用户变量是我可以依赖的空变量。否则会很糟糕。根据另一个答案,我开始接受这样一个事实:自动化我想做的事情可能是不可能的。这是可能的,至少在Windows上是可能的,但使用带有reg.exe的批处理文件读取注册表项将是我最后的选择。
setx path "%path%;%variable1%" /m