在Windows中将目录添加到PATH环境variables

在Windows NT操作系统中,我尝试将此目录添加到我的系统PATH环境variables中:

 C:\xampp\php 

所以我通过“我的电脑”>“属性”>“高级”>“环境variables”>“path”添加了该目录。 我保存了,但是当我键入:

path

到我的控制台,它不显示任何添加“C:\ xampp \ php”目录

PATH = D:\ Program Files \ Autodesk \ Maya2008 \ bin; C:\ Ruby192 \ bin; C:\ WINDOWS \ system32; C:\ WINDOWS; C:\ WINDOWS \ System32 \ Wbem; C:\ PROGRA〜1 \ DISKEE D:\ Program Files \ Microsoft SQL Server \ 90 \ Tools \ binn \; C:\ Program Files \ QuickTime \ QTSystem \; D:\ Program Files \ TortoiseSVN \ bin; D: \ Program Files \ Bazaar; C:\ Program Files \ Android \ a droid-sdk \ tools; D:\ Program Files \ Microsoft Visual Studio \ Common \ Tools \ WinNT; D:\ Program Files \ Microsoft Visual Studio \ Common \ MSDev98 \ Bin; D:\ Program Files \ Microso ft Visual Studio \ Common \ Tools; D:\ Program Files \ Microsoft Visual Studio \ VC98 \ bin

我有两个问题:

  1. 为什么会发生? 有什么我做错了吗?

  2. 我如何使用控制台或以编程方式(通过batch file)添加PATHvariables中的目录?

这只会修改registry。 一个进程不会使用这些值,直到它这个变化之后被启动 并且不从父进程inheritance这个环境。

您没有指定如何启动控制台会话。 确保这一点的最佳方法是注销并重新login。

  • 通过控制面板或系统设置更改系统path后,打开控制台窗口。

要么

  • set PATH=%PATH%;C:\xampp\php

    在你打开的命令窗口中

    打破它:

     set PATH=%PATH%; -- takes the current path and sets PATH to it. C:\xampp\php -- Adds this directory to the path, because of 'set PATH' this is added to the path 

警告:在使用此方法之前, 不要跳过创build备份
您可能会丢失%PATH%数据,或添加从系统variables合并的不相关内容
换句话说,不要一味地复制/粘贴这个。 谨慎使用。


在Windows 7和Windows 8中,我们可以使用setx命令从命令行永久设置path。 将git添加到“PATH”中:

 setx path "%path%;C:\Program Files (x86)\Git\bin\" 

请注意,这个命令可以截断你传递给1024个字符的path,失去了任何东西。 一般来说,一定要使用cmd.exe ,而不是command.com 。 两者都提供命令行。 cmd.exe较新,限制较less。 command.com年纪大了, 它具有像path大小的限制。

在Windows 8系列(8和8.1)中,您应该以pipe理员权限运行命令提示符。

编辑: 由@FF_Dev评论

由于使用了%PATH%variables,这个命令会把系统环境variables和用户variables合并起来。

您不需要任何setsetx命令,只需打开terminal并input:

 PATH 

这显示了PATHvariables的当前值。 现在你想添加目录到它? 只需input:

 PATH %PATH%;C:\xampp\php 

如果由于某种原因想要清除PATHvariables(完全没有path或删除其中的所有path),请键入:

 PATH ; 

更新

像丹尼尔·威尔逊(Danial Wilson)在下面的评论中指出的那样,它只在当前会议中设定path 要设置path永久使用setx但请注意,虽然这会永久性地设置path,但不会在当前会话中,所以您必须启动一个新的命令行才能看到更改,更多信息在这里 。

要检查是否存在环境variables或查看其值,请使用ECHO通讯:

 echo %YOUR_ENV_VARIABLE% 

在PowerShell的这个时代,我会编辑PATH:

 $PATH = [Environment]::GetEnvironmentVariable("PATH") $xampp_path = "C:\xampp\php" [Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path") 

为整个机器设置所有用户的variables,最后一行应该是这样的:

 [Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine") 

在PowerShell脚本中,您可能需要在添加到PATH之前检查C:\xampp\php的存在(以防以前已添加)。 你可以把它包装在一个if条件。

所以把它们放在一起:

 $PATH = [Environment]::GetEnvironmentVariable("PATH") $xampp_path = "C:\xampp\php" if( $PATH -notlike "*"+$xampp_path+"*" ){ [Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine") } 

晚到派对 – 但方便,如果你已经在你想添加到PATH目录。

set PATH=%PATH%;%CD%

编辑:按照评论 – 与标准的Windows CMD,但不是在PowerShell的作品。

对于PowerShell的%CD%等同于[System.Environment]::CurrentDirectory

如果使用setx错误inputpath怎么办? 最好的方法是通过Windows UI 控制面板 – >所有控制面板项目 – >系统 – >高级系统安装 – >环境variables

向下滚动到path,然后select编辑。 您也可以将其复制并粘贴到您喜欢的编辑器中,以便查看整个path并更轻松地进行编辑。

更安全的SETX

对@ Nafscript的初始SETX答案的所有评论点头。

  • SETX默认会更新你的用户path。
  • SETX ... /M将更新您的系统path。
  • %PATH%包含附加了用户path的系统path

警告

  1. 备份您的PATHSETX将截断超过1024个字符的垃圾
  2. 不要调用SETX %PATH%;xxx – 将系统path添加到用户path中
  3. 不要调用SETX %PATH%;xxx /M – 将用户path添加到系统path中
  4. 过多的batch file使用会导致失明1

ss64 SETX页面有一些很好的例子。 重要的是它指向SETXSETX /M的registry键

用户variables:

HKCU\Environment

系统variables:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

使用说明

附加到用户PATH

append_user_path.cmd

 @ECHO OFF REM usage: append_user_path "path" SET Key="HKCU\Environment" FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B ECHO %CurrPath% > user_path_bak.txt SETX PATH "%CurrPath%";%1 

附加到系统PATH

append_system_path.cmd必须以pipe理员身份运行。

(除了使用不同的KeySETX /M修饰符外基本相同)

 @ECHO OFF REM usage: append_system_path "path" SET Key="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B ECHO %CurrPath% > system_path_bak.txt SETX PATH "%CurrPath%";%1 /M 

备择scheme

最后,可能会有一个名为SETENV的改进版本,由ss64 SETX页面推荐,它将设置用户或系统环境variables。


1.不完全正确

除了所有的答案,如果你想要一个漂亮的GUI工具来编辑你的Windows环境variables,你可以使用快速环境编辑器

尝试一下! 它的安全使用和真棒!

http://www.rapidee.com/en/

在Windows 10 LTSB上检查上面的build议,并查看“帮助”轮廓(在cmd上input“command /?”时可以查看),结果是PATH命令更改了系统环境variables只有当前会话的path值,但在重新启动后,所有的值重置为其默认值 – 就像使用PATH命令之前一样。

另一方面,使用具有pipe理权限的SETX命令function更强大,它会将这些值更改为好(或者至less在下一次使用此命令之前,或者直到下次这些值手动GUI操作时为止)。

但为了清晰起见,我认为在这里共享最适合我的SETX语法的用法可能有助于某一天:

 SETX PATH "%PATH%;C:\path\to\where\the\command\resides" 

在哪里等号'='应该避免,你不担心空间! 没有必要为包含空格的path插入更多的引号 – 拆分符号“;” 做这个工作

SETX后面的PATH关键字定义了哪些值应该在系统环境variables可能值中进行更改,而引号内的%PATH%(由百分号包围的单词PATH)会告诉操作系统离开现有PATH值,并将以下path(分割符号';'后面的path)添加到现有值。

HTH

关于第2点,我正在使用一个简单的batch file,为我填充PATH或其他环境variables。 因此,默认情况下不存在环境variables的污染。 这个batch file是从任何地方访问,所以我可以键入:

 c:\>mybatchfile -- here all env. are available c:\>php file.php 

你可以在这里查看关于这个简单方法的更多细节。

  • 命令行的变化不会是永久性的,当控制台closures时会丢失。
  • path工作就像先到先得。
  • 您可能想要覆盖其他已经包含的可执行文件。 例如,如果您的path上已经有另一个版本,并且您希望添加其他版本而不对path进行永久性更改,则应将该目录置于该命令的开头。

覆盖已经包含的可执行文件;

设置PATH = C:\ xampp \ php;%PATH%;

控制面板的一个更好的select是使用这个名为Pathenator的sourceforge免费软件:

https://sourceforge.net/projects/pathenator/

但是,它只适用于具有Dot.Net 4.0或更高版本的系统,如Windows 7,8或10。

在命令提示符中,通过使用start命令将Cmd命令用于Explorer的命令行。

所以start Yourbatchname

注意你必须注册,就好像它的名字是batchfile.exe

可以将程序和文档添加到registry中,以便在“开始 – 运行”对话框或快捷方式中input名称而不使用它们的path,使Windows能够find它们。

这是一个通用的reg文件。 将下面的行复制到一个新的文本文档并将其保存为anyname.reg。 用您的程序或文档编辑它。

在path中使用\来分隔键path中的文件夹名称,因为registry使用单个\来分隔键名。 所有reg文件都以REGEDIT4开头。 分号将一行变成注释。 @符号表示将值分配给键而不是命名值。

该文件不必存在。 这可以用来设置Word.exe来打开Winword.exe。

键入start batchfile将启动iexplore.exe。

 REGEDIT4 ;The bolded name below is the name of the document or program, <filename>.<file extension> [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Batchfile.exe] ;The @ means the path to the file is assigned to the default value for the key. ;The whole path in enclosed in a quotation mark ". @="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\"" ;Optional Parameters. The semicolon means don't process the line. Remove it if you want to put it in the registry ;Informs the shell that the program accepts URLs. ;"useURL"="1" ;Sets the path that a program will use as its' default directory. This is commented out. ;"Path"="C:\\Program Files\\Microsoft Office\\Office\\" 

你已经在另一个答案中被告知path。 另请参阅doskey /? 为cmdmacros(他们只在打字时才起作用)。

您可以运行CMD的启动命令。 从Windows Recource Kit技术参考

自动运行

 HKCU\Software\Microsoft\Command Processor Data type Range Default value REG_SZ list of commands There is no default value for this entry. 

描述

包含每次启动Cmd.exe时都执行的命令。