【问题标题】:Seting the PATH environment variable via cmd通过 cmd 设置 PATH 环境变量
【发布时间】:2014-06-28 22:07:37
【问题描述】:

我尝试添加到 PATH 环境变量“;C:\my_EXE”,这样我就可以通过 cmd(Windows 8)运行我放在那里的程序。 我试过这个命令:

set PATH=%PATH%;C:\my_EXE

但它仅在关闭 CMD 窗口之前更改了 PATH 环境变量。 我在谷歌上搜索,我发现了这个命令:

setx PATH "%PATH%;C:\my_EXE"

应该永远设置它,但它也只能在 CMD 窗口关闭之前工作 它做了这样的事情:

[new PATH]=[old PATH]X2

它只出现在新的 cmd 中而不出现在系统属性中(!=cmd,有我的新路径而不是 X2 的 PATH)

为什么会这样? 如何设置 PATH 环境变量没有问题?

【问题讨论】:

  • 有两个持久的 PATH 变量,每个机器变量和每个用户变量。它们被附加在一起以产生实际的环境变量。这就是为什么您将路径加倍的原因,您将每个用户变量设置为包含附加变量中的所有内容。您可以将 setx 与 /m 参数一起使用,但您应该考虑改用 pathman,因为它旨在操纵路径。 (如果持久 PATH 引用另一个环境变量,使用 setx 可能会导致数据丢失。)
  • @Harry Johnston : /m 参数对我不起作用(问题没有解决,pathman 链接到 Windows Server 2003 Resource Kit Tools [???]
  • 是的,pathman 是 W2003 资源工具包工具包的一部分。 (您可以直接下载cab文件并从中提取pathman.exe,无需运行安装程序。)
  • @Harry Johnston:谢谢!它工作得很好。 (如果你想把它写成答案)。

标签: windows cmd environment-variables


【解决方案1】:

有两个持久的 PATH 变量,每个机器变量和每个用户变量。它们被附加在一起以产生实际的环境变量。 (此时PATH中的环境变量也展开了。)

这就是为什么您将路径加倍的原因,因为您已将每个用户的持久变量设置为包含环境变量中的所有内容(它已经包含了每台机器持久变量中的所有内容)。

您可以使用带有 /m 参数的 setx 来设置每台机器的持久变量,但这并不理想:

  • 如果设置了per-user持久变量,其内容会被复制到per-machine持久变量中,这很可能是不合适的;

  • 如果持久性变量引用其他环境变量,则引用将替换为这些变量的当前值。如果引用的变量发生变化,PATH 将不再跟随这些变化。 (不过说实话,大多数时候这并不重要:该功能并不常用。)

请考虑使用专为操纵路径而设计的pathman。您可以从Windows Server 2003 Resource Kit Tools 下载获得pathman.exe

请注意,如果有任何无响应的 GUI 应用程序正在运行,即使应用程序窗口被隐藏,setxpathman 都可能会挂起。将这种风险降到最低的最佳方法是在运行任何使用setxpathman 的脚本之前立即重新启动计算机。

【讨论】:

    【解决方案2】:

    你应该使用带有“/m”参数的setx命令。

    【讨论】:

    • @Yagel:显示完整的命令行(通过编辑您的问题)并告诉我们到底发生了什么。
    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2016-11-29
    • 2012-10-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2019-06-30
    相关资源
    最近更新 更多