gpt4 book ai didi

Windows 批处理,仅选择用户变量

转载 作者:可可西里 更新时间:2023-11-01 13:20:05 28 4
gpt4 key购买 nike

在环境变量中,我有一个用于用户变量和系统变量的 PATH 变量。

在批处理脚本中,为了让我用新的给定路径附加用户 PATH 变量,我需要选择当前值。不幸的是,%PATH% 返回了用户变量和系统变量的组合。

当然我只想给用户变量添加一个新的自定义路径值。也没有必要使用系统路径来增强它。这就是为什么我有 2 个变量。

提前致谢。

编辑:在文档中找到以下语句:

%PATH% 变量被设置为系统变量和用户变量,这两个值组合起来为当前登录的用户提供 PATH....

例子:

用户变量:

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"

打开新命令

echo %PATH%
c:\Program Files;c:\dev;c:\tmp

那是错误的,因为我只需要 c:\dev;c:\tmp

我希望这次我更清楚了。

最佳答案

你是如何修改变量的?

只有一个环境变量PATH,所以你可以继续修改它。这些更改是暂时的(对于您的进程及其子进程而言是本地的)。

Registry 中有两个(实际上更多)持久位置,在创建进程时从中初始化环境变量。您可以使用 reg 修改它们效用。没有歧义,因为它们是分开的:

  • 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 中。在批处理文件中使用它时,请记住加倍 %

关于Windows 批处理,仅选择用户变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359082/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com