在环境变量中,我有一个用于用户变量和系统变量的 PATH 变量。
在批处理脚本中,为了向用户 PATH 变量附加新的给定路径,我需要选择当前值。不幸的是 %PATH% 返回用户变量和系统变量的组合。
当然,我只想向用户变量添加新的自定义路径值。也没有必要通过系统路径来增强它。这就是为什么我有两个变量。
提前致谢。
编辑:在文档中发现以下语句:
%PATH% 变量设置为系统变量和用户变量,这两个值组合起来给出当前登录用户的 PATH...
Example:
用户变量:
PATH
value: c:\dev
系统变量
PATH
value: c:\Program Files
我想要做的是将值添加到用户变量:c:\tmp,这样最终 PATH 将具有值:c:\dev;c:\tmp
但是,如果打开 cmd 窗口:
echo %PATH%
c:\Program Files;c:\dev
所以 setx 将执行以下操作
setx path "%path%;c:\tmp"
打开新的cmd
echo %PATH%
c:\Program Files;c:\dev;c:\tmp
这是错误的,因为我只需要 c:\dev;c:\tmp
我希望这次我说得更清楚了。
你如何修改变量?
只有一个环境变量PATH
,这样您就可以继续更改它。这些更改是暂时的(并且对于您的进程及其子进程而言是本地的)。
注册表中有两个(实际上更多)持久位置,当创建进程时,环境变量将从这些位置初始化。您可以使用修改它们reg http://technet.microsoft.com/en-us/library/bb490984.aspx公用事业。没有歧义,因为它们是分开的:
- HKEY_CURRENT_USER\环境
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
您可能必须重新登录才能使注册表中的更改生效(我不记得是否有编程方式来通知资源管理器这些设置已更改)。另请注意,默认情况下,子进程继承其父进程的环境(除非父进程采取特殊措施否则),因此例如如果你启动一个cmd
窗口,然后通过系统设置对话框修改环境,应用程序从该窗口启动cmd
不会看到变化。
[UPD]您可以使用以下命令从注册表中获取特定于用户的环境变量的值reg
公用事业:
reg query HKCU\Environment /v PATH
尽管您必须过滤其输出以获得实际值,因为它会输出一些无用的文本。这是一个咒语示例:
for /f "usebackq tokens=2,*" %A in (`reg query HKCU\Environment /v PATH`) do set value=%B
它将结果存储在环境变量中value
。记得加倍%
在批处理文件中使用它时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)