Windows 如何从cmd永久更新系统路径变量?
如前所述,我们可以使用Windows 如何从cmd永久更新系统路径变量?,windows,path,cmd,Windows,Path,Cmd,如前所述,我们可以使用setx 但是这个命令只能将更改为用户路径变量,而不是系统变量 我们如何在全系统范围内执行类似的命令 键入setx/?获取基本命令帮助。您将很容易发现: /M Specifies that the variable should be set in the system wide (HKEY_LOCAL_MACHINE) environment
setx
但是这个命令只能将更改为用户路径变量,而不是系统变量
我们如何在全系统范围内执行类似的命令
键入
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
快捷方式并选择以管理员身份运行
例如
警告:
我们可能会破坏当前系统的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"
为什么会有奇怪的语法?
首先,您不希望展开系统路径变量,而是将其保留为一个符号,否则您将不会参与将来对系统路径变量的添加。因此,您必须用^引用%个字符
如果在命令脚本中使用此选项,则必须使用double%%而不是^%
“包含一个包含空格的字符串。如果没有空格,可以省略引号
添加的字符串必须不带空格直接跟随,因此整个内容构成setx命令的一个参数。
pathman
可能是比setx
更好的选择,因为它是专门为操作路径而设计的。特别是,使用setx
使用嵌入的环境变量引用中断路径ndpathman
没有(据我所知)。有人不可避免地会说:“哇,那个编辑框太小了,我可以修复它!”!“这是非常非常有意的(是的,你也是英特尔)。而且与setx没有任何关系。@HarryJohnston请将你的答案放在一个单独的答案中,以便审查和接受,如果这显示了更好的解决方案。setx
可能会将该值截断为1024个字符。(至少我在Windows7EnterpriseX64 SP1
上是这么说的)。为了避免截断,请使用这个答案,因为它可能与
$p = [Environment]::GetEnvironmentVariable("PATH", [EnvironmentVariableTarget]::Machine);
[Environment]::SetEnvironmentVariable("PATH", $p + ";C:\MyPath", [EnvironmentVariableTarget]::Machine);
setx PATH ^%PATH^%;"C:\Program Files\Something\bin"