我可以使用以下命令从控制台向PATH变量添加:
setx PATH "%JAVA_HOME%\bin;%PATH%" /m但是,当我检查PATH变量之后,JAVA_HOME变量已经展开,这样实际的PATH看起来就像X:\Path\To\Java\bin;...而不是%JAVA_HOME%\bin;...。有没有一种像我在这里一样使用setx而不展开JAVA_HOME变量的方法?
尝试使用double %%,但这给了我扩展的版本,每个端都有一个百分比。也尝试过\%,但那只是搞砸了。
发布于 2013-04-24 02:52:51
命令shell使用^字符转义,因此您需要的是转义%字符,如:^%。尝试将此作为替换命令行:
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%此版本可用于批处理文件:
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's末尾缺少的尾随"是故意的。您还应该能够修改它以在远程系统上运行,方法是在\\HOSTNAME\前面预置HKEY_LOCAL_MACHINE。
https://serverfault.com/questions/501528
复制相似问题