首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止setx扩展环境变量?

防止setx扩展环境变量?
EN

Server Fault用户
提问于 2013-04-22 11:31:05
回答 1查看 3.4K关注 0票数 4

我可以使用以下命令从控制台向PATH变量添加:

代码语言:javascript
复制
setx PATH "%JAVA_HOME%\bin;%PATH%" /m

但是,当我检查PATH变量之后,JAVA_HOME变量已经展开,这样实际的PATH看起来就像X:\Path\To\Java\bin;...而不是%JAVA_HOME%\bin;...。有没有一种像我在这里一样使用setx而不展开JAVA_HOME变量的方法?

尝试使用double %%,但这给了我扩展的版本,每个端都有一个百分比。也尝试过\%,但那只是搞砸了。

EN

回答 1

Server Fault用户

发布于 2013-04-24 02:52:51

命令shell使用^字符转义,因此您需要的是转义%字符,如:^%。尝试将此作为替换命令行:

setx PATH ^%JAVA_HOME^%\bin;"%PATH%" /m

但是,在%PATH%被扩展的地方,要小心。

编辑

我觉得这样做更安全。第一个可以直接粘贴到命令提示符中:

代码语言:javascript
复制
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%

此版本可用于批处理文件:

代码语言:javascript
复制
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

票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/501528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档