在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
我有两个问题:
-
为什么会发生? 有什么我做错了吗?
-
我如何使用控制台或以编程方式(通过batch file)添加
PATH
variables中的目录?
这只会修改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合并起来。
您不需要任何set
或setx
命令,只需打开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
警告
- 备份您的
PATH
–SETX
将截断超过1024个字符的垃圾 - 不要调用
SETX %PATH%;xxx
– 将系统path添加到用户path中 - 不要调用
SETX %PATH%;xxx /M
– 将用户path添加到系统path中 - 过多的batch file使用会导致失明1
ss64 SETX页面有一些很好的例子。 重要的是它指向SETX
和SETX /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理员身份运行。
(除了使用不同的Key
和SETX /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,你可以使用快速环境编辑器
尝试一下! 它的安全使用和真棒!
在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时都执行的命令。