繁体   English   中英

批处理脚本计算机环境变量

[英]batch script machine environment variables

我有一个Windows批处理脚本,该脚本获取PATH环境变量,检查它是否具有某些值,然后将其重新设置。 例如:

SET CURRPATH=%PATH%
:: do some stuff to check for a value in CURRPATH and add the value in if it is not in there
setx PATH %PATH%

这可行,但是问题是我之前安装的其他东西创建了一个名为PATH的用户系统环境变量。 当我在批处理脚本中访问%PATH%变量时,它会将用户环境变量PATH和计算机环境变量PATH串联在一起。 每次运行脚本时,用户变量PATH都会附加到计算机环境变量中。 有没有一种方法可以访问机器环境变量?

虽然我可以简单地删除用户环境变量PATH,但这不是一个好的通用解决方案,因为我不能保证运行脚本的人员是否也会遇到同样的问题。

请注意,这似乎特定于PATH变量

您的方法还存在至少另一个问题:它将扩展PATH中存在的所有环境变量,这可能是不希望的。 另外,您可能会发现setx偶尔挂起,我相信这是由于其他应用程序在广播更改时未按预期响应。

最好的解决方案可能是生成MSI文件或使用另一种发达的安装程序技术。

第二好的方法是编写一个应用程序(一个真实的应用程序,而不是一个批处理脚本)来操纵保存环境变量的注册表设置。 可以在此处找到包含机器环境变量的注册表项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

另请参阅有关SuperUser的问题 有一个答案,其中包括基于批处理文件的解决方案,尽管它不能可靠地工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM