将目录添加到Windows的PATH环境变量中

我想把C:\xampp\php添加到我的系统PATH环境变量中,在Windows中。

我已经用环境变量对话框添加了它。

但当我在控制台中输入

C:\>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~2\DISKEE~1\;c:\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\android-sdk\tools;D:\Program Files\
Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common
\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\
Microsoft Visual Studio\VC98\bin

我有两个问题。

1.为什么会发生这种情况?是不是我做错了什么? 2.另外,我如何使用控制台将目录添加到我的PATH变量中(以及用批处理文件进行编程)?

对该问题的评论 (4)

选项1

在你用GUI修改PATH后,关闭并重新打开控制台窗口。

这样做的原因是只有在修改后启动的程序才能看到新的`PATH'。

选项2

在你所打开的命令窗口中执行这个命令。

set PATH=%PATH%;C:\your\path\here\

该命令将C:your\path\here添加到当前的PATH`中。

把它分解开来。

  • set - 一个改变cmd'环境变量的命令,只针对当前cmd会话;其他程序和系统不受影响。
  • PATH= - 标志着PATH是要暂时改变的环境变量。
  • %PATH%;C:your\path\here - %PATH%部分扩展为PATH的当前值,然后;C:your\path\here被连接到它。这将成为新的`PATH'。
评论(11)

警告:这个解决方案可能会对你的PATH和你的系统的稳定性产生破坏性。作为一个副作用,它将合并你的用户和系统PATH,并将PATH截断到1024个字符。这个命令的效果是不可逆的。请先对PATH做一个备份。更多信息请参见注释。

不要盲目地复制和粘贴这个。要谨慎使用。

你可以用setx命令永久地一个路径到PATH

setx /M path "%path%;C:\your\path\here\"

如果你想设置用户的PATH'而不是系统的PATH',请删除`M'标志。

注释。

  • setx命令只在Windows 7和更高版本中可用。

  • 你应该在高位的命令提示符下运行这个命令。

  • 如果你只想在当前会话中改变它,使用set

评论(11)
解决办法

这只是修改了注册表。 一个现有的进程不会使用这些值。如果一个新的进程是在这一修改之后启动的,并且没有从其父辈那里继承旧的环境,那么它就会使用这些值。

你没有说明你是如何启动控制台会话的。 确保这一点的最好方法是退出命令外壳并再次运行它。然后它应该会继承更新的PATH。

评论(6)

你不需要任何 "set "或 "setx "命令,只需打开终端并输入。

PATH

这就显示了PATH变量的当前值。现在你想把目录添加到其中吗?只需键入。

PATH %PATH%;C:\xampp\php

如果出于任何原因,您想清除PATH变量(完全没有路径或删除其中的所有路径),请输入。

PATH ;

更新

就像Danial Wilson在下面的评论中指出的,它只在当前会话中设置路径。要永久设置路径,请使用setx,但要注意,虽然它永久设置了路径,但不是在当前会话中,所以你必须启动一个新的命令行才能看到变化,更多信息这里

要检查环境变量是否存在或查看其值,请使用ECHO commnad。

echo %YOUR_ENV_VARIABLE%
评论(6)

我会用PowerShell代替!

要使用PowerShell向PATH添加目录,请执行以下操作。

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

要为全机的所有用户设置变量,最后一行应该是这样的:

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

[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")
}

更好的是,可以创建一个通用函数。 只要提供你想添加的目录即可。

function AddTo-Path{
param(
    [string]$Dir
)

    if( !(Test-Path $Dir) ){
        Write-warning "Supplied directory was not found!"
        return
    }
    $PATH = [Environment]::GetEnvironmentVariable("PATH")
    if( $PATH -notlike "*"+$Dir+"*" ){
        [Environment]::SetEnvironmentVariable("PATH", "$PATH;$Dir", "Machine")
    }
}

你可以通过做一些打磨来让事情变得更好。 例如,使用Test-Path来确认你的目录是否真的存在。

评论(5)

更安全的SETX

@Nafscript最初的SETX答案的所有评论点个头。

  • SETX默认会更新你的用户路径。
  • SETX ... /M将更新你的系统路径。
  • %PATH%包含系统路径和用户路径。

警告

  1. 备份你的PATH - SETX将截断超过1024个字符的垃圾。
    1. 不要调用SETX %PATH%;xxx - 将系统路径添加到用户路径中。
  2. 不要调用SETX %PATH%;xxx /M - 将用户路径添加到系统路径中。
  3. 过度使用批处理文件会导致失明1。

ss64 SETX页面]1有一些非常好的例子。重要的是它指出了 "SETX "与 "SETX /M "的注册表键的位置。

用户变量。

HKCU\Environment

系统变量。

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. 必须以管理员身份运行

(除了不同的 "键 "和 "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

替代品

最后,可能有一个改进的版本,叫做SETENV,由ss64的SETX页面推荐,将设置用户或系统环境变量分开。


  1. 不是严格意义上的。
评论(0)

姗姗来迟--但如果你已经在你想添加到PATH的目录中,就很方便了。

set PATH=%PATH%;%CD%

编辑。 根据评论--在标准的windows cmd中有效,但在powerhell中无效。

对于powershell,%CD%相当于[System.Environment]::CurrentDirectory

评论(3)

如果你用setx打错了路径怎么办? 最好的方法就是通过windows的U.I.。 控制面板->所有控制面板项->系统->高级系统设置->环境变量

向下滚动到路径,选择编辑。 你也可以将它复制并粘贴到你最喜欢的编辑器中,这样你就可以看到整个路径,更容易编辑它。

评论(1)

除了所有的答案之外,如果你想要一个漂亮的GUI工具来编辑你的windows环境变量,你可以使用[快速环境编辑器][1] 。

试试吧! 它的安全使用和真棒!

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

[1]: http://www.rapidee.com/en/

评论(1)
  • 命令行的改变不会是永久性的,会在控制台关闭时丢失。
  • 路径的工作方式是先到先得。
  • 你可能想覆盖其他已经包含的可执行文件。 例如,如果你的路径上已经有了另一个版本,而你想添加不同的版本而不对路径进行永久的修改,你应该把目录放在命令的开头。

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

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

评论(0)

在Windows 10 LTSB上查看上述建议,并在"帮助" 概要(在cmd上输入'命令/?&#39时可以查看),让我找到了"帮助"。 cmd上),让我找到了。 结论是,PATH命令只改变了当前会话的系统环境变量Path值,但在重启后,所有的值都会被重置为默认值,就像使用PATH命令之前一样。

另一方面,使用具有管理权限的SETX命令更加强大,它可以永久地改变这些值(或者至少在下一次使用这个命令之前,或者在下一次手动操作这些值之前......)。 ).

但是为了清楚起见,我想在这里分享一下最好的SETX语法用法 对我有用的东西,也许有一天会对别人有所帮助。

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

其中任何等号'=&#39。 应该避免,而且你不要担心。 空格! 路径中不需要再加引号。 内含空格的--分割符号';&#39。 来完成这项工作。

SETX后面的PATH关键字定义了在系统环境变量可能的值中应该改变哪一组值,而引号内的%PATH%(PATH这个词,周围有百分号),则告诉操作系统保持现有的PATH值不变,并将下面的路径(分割符号后面的那个';&#39。 )添加到现有的值上。

HTH

评论(0)

关于第2点*,我使用的是一个简单的批处理文件,为我填充PATH或其他环境变量。 因此,默认情况下没有环境变量的污染。 这个批处理文件可以从任何地方访问,所以我可以打字。

c:\>mybatchfile
-- here all env. are available
c:\>php file.php
评论(3)

在命令提示符中,你用start作为前缀,告诉Cmd使用资源管理器的命令行。

所以start Yourbatchname

注意你要把它的名字注册成batchfile.exe

程序和文件可以被添加到注册表中,所以在 "开始-运行 "对话框或快捷方式中键入它们的名称而不是它们的路径,可以让Windows找到它们。

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

在路径中使用\来分隔关键路径中的文件夹名,就像regedit使用单个\来分隔它的键名一样。 所有的reg文件都以regedit4开头。 分号将一行变成注释。 @符号的意思是将值分配给键,而不是一个命名的值。

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

输入start batchfile将启动iexplore.exe。

REGEDIT4
;The bolded name below is the name of the document or program, . 

[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\\"

你'已经在另一个答案中被告知了路径的问题。 也可以参考doskey /?的cmd宏(只有在输入时才有效)。

你可以运行CMD的启动命令。 来自Windows资源包技术参考

自动运行

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时执行的命令。

评论(0)

一个更好的替代控制面板的方法是使用这个来自sourceforge的免费程序,叫做Pathenator。

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

然而,它只适用于Dot.Net 4.0或更高版本的系统,如windows 7、8或10。

评论(0)

如果运行 "cmd "命令,它将更新该命令窗口的所有系统变量。

评论(2)

使用[gtools][1]中的pathed。

它以一种直观的方式做事情,例如。

pathed /REMOVE "c:\my\folder"
pathed /APPEND "c:\my\folder"

并显示结果 不需要生成一个新的cmd !

[1]: http://p-nand-q.com/download/gtools/pathed.html

评论(0)
  1. 那次我已经安装了PHP。将php-7***.zip解压到C:\php\中。

  2. 备份我当前的PATH环境变量:运行cmd,并执行命令。path >C:\path-backup.txt

  3. 把我当前的路径值输入C:\path.txt文件(同样的方法

  4. 修改path.txt(当然,我的路径长度超过1024个字符,windows运行了好几年了

  • 我已经删除了里面重复的路径,比如'C:\Windows;或C:\Windows\System32;或C:\Windows\System32\Wbem; - 我已经有两次了。
  • 也要删除未安装的程序路径。例如。C:\Program Files\NonExistSoftware;。
  • 这样一来,我的路径字符串长度< 1024 :))
  • 在路径字符串的末尾添加;C:\php\
  • 只把路径值复制到带框架的双引号的缓冲区中! 例子。"C:\Windows;****;C:\php\" 那里不应该有PATH=!!。
  1. 以管理员身份打开Windows PowerShell。
    1. 运行命令。

setx path "这里你应该从缓冲区插入字符串(新的路径值)"

  1. 重新运行你的终端(我使用 "Far manager")并检查。 php -v
评论(0)

尽管这很微不足道,但在遇到这个问题时,我不得不重启Windows

我正在运行Windows 7 x64。我对系统PATH变量进行了手动更新。如果我从stat菜单中运行cmd.exe,这就可以了。但如果我在Windows资源管理器的地址栏中输入 "cmd",它似乎会从其他地方加载PATH,而这些地方并没有我的手动修改。

(为了避免疑问--是的,在我重新启动之前,我确实关闭并重新运行了几次cmd,但这并没有帮助。)

评论(0)