【问题标题】:How to update system PATH variable permanently from cmd?如何从 cmd 永久更新系统 PATH 变量?
【发布时间】:2014-08-04 20:35:06
【问题描述】:

我们可以使用setx 讨论here

setx PATH "%PATH%;C:\Something\bin"

但此命令只能更改为用户 PATH 变量而不是系统变量。

我们如何制作类似的系统范围命令?

【问题讨论】:

标签: windows path cmd


【解决方案1】:

处理>1024字符路径时的解决方案

在我的情况下,其他答案均无效,但使用 pathed 可以解决问题。您可以像这样简单地附加到路径:

pathed /append C:\Path\To\Be\Added /machine

您可以通过运行检查编辑是否正确

pathed

PS:如果您想更改用户的路径,请改用: pathed /append C:\Path\To\Be\Added /userpathed /user 检查它是否正确通过。

PPS:为了能够从终端运行 pathed,您需要将 exe 放在路径上已经存在的目录中(或在路径中添加一个新目录,但是您可能需要打开一个新的实例cmd.exe 以便识别新路径)

【讨论】:

    【解决方案2】:

    请参考Adding a directory to the PATH environment variable in Windows

    append_user_path.cmd
    append_system_path.cmd
    

    - 两者都可以正常工作

    【讨论】:

      【解决方案3】:

      如果要在用户级别向 PATH 环境变量添加一些位置,请在命令行上使用以下命令:

      setx PATH ^%PATH^%;"C:\Program Files\Something\bin"
      

      为什么会有奇怪的语法? 首先,您不想扩展系统 PATH 变量而是将其保留为符号,否则您将不会参与将来对系统 PATH 变量的添加。因此,您必须用 ^ 引用 % 字符。

      如果在命令脚本中使用它,则必须使用双 %% 而不是 ^%。

      " 包含一个包含空格的字符串。如果没有空格,可以省略引号。

      添加的字符串必须直接跟在后面,没有空格,所以整个字符串形成了 setx 命令的单个参数。

      【讨论】:

        【解决方案4】:

        %PATH% 的一个问题是它包含用户的路径。如果你不介意Powershell,可以运行以下

        $p = [Environment]::GetEnvironmentVariable("PATH", [EnvironmentVariableTarget]::Machine);
        [Environment]::SetEnvironmentVariable("PATH", $p + ";C:\MyPath", [EnvironmentVariableTarget]::Machine);
        

        【讨论】:

          【解决方案5】:

          从powershell

          setx /M PATH "$($env:path);c:\program files\mynewprogram"
          

          【讨论】:

            【解决方案6】:

            键入setx /? 以获取基本命令帮助。你会很容易发现:

            /M                     Specifies that the variable should be set in
                                   the system wide (HKEY_LOCAL_MACHINE)
                                   environment. The default is to set the
                                   variable under the HKEY_CURRENT_USER
                                   environment.
            

            您需要从提升的命令提示符处运行它。右键单击cmd 快​​捷方式并选择Run as Administrator

            例如

            setx /M PATH "%PATH%;C:\Something\bin"
            

            注意:

            我们可能会破坏当前系统的 PATH 变量。确保在修改它之前备份它的值。

            【讨论】:

            • pathman 可能是比setx 更好的选择,因为它专门用于操纵路径。特别是,使用 setx 会破坏带有嵌入式环境变量引用的路径,而 pathman 不会(据我所知)。
            • somebody 不可避免地会说“哇,那个编辑框太小了,我可以解决这个问题!”这是非常非常有意的(是的,你也是英特尔)。和 setx 没有任何关系。
            • @HarryJohnston 如果有更好的解决方案,请将您的答案放入单独的答案中以供审核和接受。
            • setx 可能会将值截断为 1024 个字符。 (至少这是它在Windows 7 Enterprise x64 SP1 上对我的要求)。
            • 避免截断 - 使用这个答案*.com/a/37304698/1762994
            最近更新 更多