我可以使用以下命令从控制台添加到PATH
variables中:
setx PATH "%JAVA_HOME%\bin;%PATH%" /m
但是,之后检查PATHvariables时, JAVA_HOME
variables已经被扩展,所以实际的PATH
看起来像X:\Path\To\Java\bin;...
而不是%JAVA_HOME%\bin;...
有没有像我这样使用setx的方法,而不扩大JAVA_HOME
variables?
尝试使用双%%
但只是给了我在每一个百分比的扩大版本。 还试过\%
,但是这只是搞砸了。
命令shell用^
字符转义,所以你需要的是像这样转义%
字符: ^%
。 试试这个作为replace命令行:
setx PATH ^%JAVA_HOME^%\bin;"%PATH%" /m
但要小心, %PATH%
正在扩展。
编辑
我认为这是一个更安全的方式来做到这一点。 第一个可以粘贴到命令提示符中:
FOR /F "usebackq skip=2 tokens=2,*" %i IN (`REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path`) DO set origpath=%j SET newpath=^%JAVA_HOME^%\bin;%origpath% REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v Path_ /t REG_EXPAND_SZ /d "%newpath%
而这个版本可以在batch file中使用:
FOR /F "usebackq skip=2 tokens=2,*" %%i IN (`REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path`) DO set origpath=%%j SET newpath=%%JAVA_HOME%%\bin;%origpath% REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v Path_ /t REG_EXPAND_SZ /d "%newpath%
在这两种情况下,请仔细检查生产系统。 我相信我所有的时髦逃避正确,但我可能已经错过了一些东西。 还要注意两行第3行末尾的"
末尾"
是有意的,您还应该可以通过在HKEY_LOCAL_MACHINE
之前加上\\HOSTNAME\
来修改它以便在远程系统上运行。