繁体   English   中英

如何从cmd永久更新系统PATH变量?

[英]How to update system PATH variable permanently from cmd?

我们可以使用这里讨论的setx

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

但是这个命令只能改变用户 PATH 变量而不是系统变量。

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

在此处输入图片说明

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 变量。 请确保在修改之前备份其值。

来自 PowerShell

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

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

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

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

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

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

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

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

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

请参阅在 Windows 中将目录添加到 PATH 环境变量

append_user_path.cmd
append_system_path.cmd

- 两者都工作得很好

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

其他答案都不适用于我的情况,但是使用pathed 可以解决问题 您可以像这样简单地附加到路径:

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

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

pathed

PS:如果你想改变用户的路径而不是使用: pathed /append C:\\Path\\To\\Be\\Added /userpathed /user来检查它是否正确通过。

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

暂无
暂无

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

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