如这里所讨论,我们可以使用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
的快捷方式,选择 以管理员身份运行
。
例如:
setx /M PATH "%PATH%;C:\Something\bin"
注意:
我们可能会破坏当前系统的PATH变量。在修改它之前,请确保备份其值。
setx
相比,pathman
更适合用于路径的操作,因为它专门设计用于此目的。特别是,使用 setx
会破坏带有嵌入式环境变量引用的路径,而 pathman
没有这个问题(据我所知)。 - Harry Johnstonsetx
命令可能会将值截断为1024个字符(至少在我使用 Windows 7 Enterprise x64 SP1
时是这样)。 - ZarephethREG_SZ
注册表值的精心实现。(不引用其他变量的变量被设置为REG_SZ
值。它们在重新加载环境时在REG_EXPAND_SZ
值之前加载,所以在"Path"中使用它们是安全的。)单独使用setx.exe 不能足以更新PATH
。它必须与reg.exe结合使用,并且实现这一点的批处理代码很复杂。 - Eryk Sun来自PowerShell
setx /M PATH "$($env:path);c:\program files\mynewprogram"
解决处理>1024个字符的路径的方法:
其他答案在我的情况下都没有起作用,但使用pathed很有用。您可以像这样简单地添加到路径:
pathed /append C:\Path\To\Be\Added /machine
您可以运行以下命令来检查编辑是否正确:
pathed
提示:如果您想更改用户路径,请改用:pathed /append C:\Path\To\Be\Added /user
,并使用pathed /user
检查是否正确执行。
另外,为了能够从终端运行pathed,请将exe文件放在已经在您的路径中的目录中(或者添加一个新路径,但是您可能需要打开一个新的cmd.exe实例才能识别新路径)。
%PATH%存在的一个问题是它包含了用户的路径。如果您不介意使用Powershell,您可以运行以下命令:
$p = [Environment]::GetEnvironmentVariable("PATH", [EnvironmentVariableTarget]::Machine);
[Environment]::SetEnvironmentVariable("PATH", $p + ";C:\MyPath", [EnvironmentVariableTarget]::Machine);
setx PATH ^%PATH^%;"C:\Program Files\Something\bin"
为什么会有奇怪的语法? 首先,您不希望扩展系统PATH变量,而是将其保留为符号,否则您将无法参与将来对系统PATH变量的添加。因此,您必须使用^引用%字符。
如果您在命令脚本中使用此功能,则必须使用双%%代替^%。
"括起来的字符串包含空格。如果没有空格,可以省略引号。
添加的字符串必须直接跟在后面,没有空格,这样整个字符串就形成了setx命令的单个参数。
append_user_path.cmd
append_system_path.cmd
- 两种方法都可以运行良好