命令行 - 在Windows中将目录添加到PATH环境变量
我想在Windows中将C:\xampp\php添加到我的系统PATH环境变量中。
我已经使用Environment Variables对话框添加了它。
但是当我输入我的控制台时:
C:\>path
它不会显示新的PATH目录:
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
我有两个问题:
为什么会这样? 我做错了吗?
另外,如何使用控制台(以编程方式,使用批处理文件)将目录添加到我的PATH变量中?
16个解决方案
807 votes
选项1
使用GUI更改%PATH%;C:\your\path\here\后,关闭并重新打开控制台窗口。
这是有效的,因为只有在更改后启动的程序才会看到新的%PATH%;C:\your\path\here\。
选项2
在已打开的命令窗口中执行以下命令:
set PATH=%PATH%;C:\your\path\here\
此命令将%PATH%;C:\your\path\here\附加到当前的%PATH%。
打破它:
%PATH%;C:\your\path\here\ - 仅为当前cmd会话更改cmd环境变量的命令; 其他程序和系统不受影响。
%PATH%;C:\your\path\here\ - 表示%PATH%是要临时更改的环境变量。
%PATH%;C:\your\path\here\ - %PATH%部分扩展为当前值PATH,然后将;C:\your\path\here\连接到它。 这成为新的PATH。
JimR answered 2019-01-01T22:08:42Z
156 votes
警告:此解决方案可能会破坏您的PATH以及系统的稳定性。 作为副作用,它将合并您的用户和系统PATH,并将PATH截断为1024个字符。 此命令的效果是不可逆转的。 首先备份PATH。 有关详细信息,请参阅注释。
不要盲目地复制粘贴它。 谨慎使用。
您可以使用setx命令永久添加setx的路径:
setx /M path "%path%;C:\your\path\here\"
如果要设置用户PATH而不是系统PATH,请删除setx标志。
笔记:
setx命令仅在Windows 7及更高版本中可用。
您应该从提升的命令提示符运行此命令。
Nafscript answered 2019-01-01T22:09:38Z
117 votes
这只会修改注册表。 在此更改之后启动并且不从其父级继承环境之前,进程不会使用这些值。
您没有指定启动控制台会话的方式。 确保这一点的最佳方法是注销并重新登录。
Hans Passant answered 2019-01-01T22:07:23Z
52 votes
您不需要任何setx或setx命令,只需打开终端并键入:
PATH
这显示了PATH变量的当前值。 现在要添加目录吗? 只需输入:
PATH %PATH%;C:\xampp\php
如果出于任何原因想要清除PATH变量(根本没有路径或删除其中的所有路径),请键入:
PATH ;
更新
就像Danial Wilson在下面的评论中所指出的那样,它只在当前会话中设定了路径。 要永久设置路径,请使用setx,但请注意,虽然它会永久设置路径但不在当前会话中,因此您必须启动新命令行才能查看更改,此处有更多信息。
要检查环境变量是否存在或查看其值,请使用ECHO命令:
echo %YOUR_ENV_VARIABLE%
zar answered 2019-01-01T22:10:27Z
28 votes
在这个PowerShell时代,我会像这样编辑PATH:
$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path")
要在机器范围内为所有用户设置变量,最后一行应如下所示:
[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")
}
Ifedi Okonkwo answered 2019-01-01T22:11:08Z
23 votes
晚到派对 - 但如果您已经在要添加到PATH的目录中,则会很方便。
%CD%
编辑:根据评论 - 使用标准的Windows cmd但不在powershell中。
对于powershell,%CD%的等价物是[System.Environment]::CurrentDirectory
nclord answered 2019-01-01T22:11:49Z
23 votes
更安全的SETX
对@ Nafscript最初的Key答案的所有评论点头。
默认情况下,Key将更新您的用户路径。
Key将更新您的系统路径。
Key包含附加了用户路径的系统路径
警告
备份你的Key - Key将截断你的垃圾超过1024个字符
请勿致电Key - 将系统路径添加到用户路径中
请勿致电Key - 将用户路径添加到系统路径中
使用过多的批处理文件会导致失明
ss64 SETX页面有一些很好的例子。 重要的是,它指向注册表项的位置Key vs SETX /M
用户变量:
Key
系统变量:
Key
使用说明
附加到用户Key
Key
@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
附加到系统Key
Key.必须以管理员身份运行。
(它基本相同,只是使用不同的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
备择方案
最后,ss64 SETX页面推荐使用一个名为SETENV的改进版本,该版本拆分设置用户或系统环境变量。
1.严格来说并非如此
icc97 answered 2019-01-01T22:14:27Z
18 votes
如果您使用setx错误输入路径怎么办? 最好的方法是通过Windows U.I.控制面板 - >所有控制面板项目 - >系统 - >高级系统设置 - >环境变量
向下滚动到Path并选择Edit。 您还可以将其复制并粘贴到您喜欢的编辑器中,以便您可以查看整个路径并更轻松地编辑它。
Thomas Fonseca answered 2019-01-01T22:14:55Z
3 votes
命令行更改不会是永久性的,在控制台关闭时将丢失。
路径的工作方式就像先到先得。
您可能希望覆盖其他已包含的可执行文件。 例如,如果您的路径上已经有另一个版本,并且想要添加不同版本而不对路径进行永久更改,则应将该目录放在命令的开头。
覆盖已包含的可执行文件;
设置PATH = C:\ xampp \ php;%PATH%;
hevi answered 2019-01-01T22:15:43Z
2 votes
除了所有答案之外,如果您想要一个很好的GUI工具来编辑Windows环境变量,您可以使用Rapid Environment Editor
试试吧! 它使用安全,真棒!
[http://www.rapidee.com/en/]
Mp de la Vega answered 2019-01-01T22:16:17Z
1 votes
关于第2点,我正在使用一个简单的批处理文件,为我填充PATH或其他环境变量。 因此,默认情况下不会污染环境变量。 可以从任何地方访问此批处理文件,因此我可以键入:
c:\>mybatchfile
-- here all env. are available
c:\>php file.php
您可以在此查看有关此简单方法的更多详细信息。
Grzegorz Gajos answered 2019-01-01T22:16:46Z
1 votes
在Windows 10 LTSB上查看上述建议,并瞥见“帮助”大纲(在cmd上键入'command /?'时可以看到),让我进入结论是PATH命令仅为当前会话更改系统环境变量Path值,但在重新引导后,所有值都重置为其默认值 - 就像使用PATH命令之前一样。
另一方面,使用具有管理权限的SETX命令更强大,它会更好地更改这些值(或者至少直到下次使用此命令或直到下次手动GUI操作这些值...)。
但为了清楚起见,我认为在这里分享最好的SETX语法用法那对我有用的人可能有一天会帮助别人:
SETX PATH "%PATH%;C:\path\to\where\the\command\resides"
应该避免任何等号“=”,你不用担心空格! 不需要为路径添加任何引号其中包含空格 - 分裂符号';' 做好这份工作。
SETX后面的PATH关键字定义了应在系统环境变量可能值中更改哪组值,并且引号内的%PATH%(由百分号包围的单词PATH)告诉操作系统保留现有值 PATH值原样并将以下路径(分裂符号';'后面的路径)添加到现有值。
HTH
such_ke_nasdeeq answered 2019-01-01T22:17:36Z
0 votes
在命令提示符中,您告诉Cmd使用Explorer的命令行,方法是使用doskey /?。
所以doskey /?。
请注意,您必须注册,就好像它的名称是doskey /?。
程序和文档可以添加到注册表中,因此在“开始 - 运行”对话框或快捷方式中键入其名称而不使用其路径,Windows可以找到它们。
这是一个通用的reg文件。 将下面的行复制到新的文本文档并将其另存为anyname.reg。 使用您的程序或文档进行编辑。
在路径中使用\来分隔关键路径中的文件夹名称,因为regedit使用单个\来分隔它的键名。 所有reg文件都以REGEDIT4开头。 分号将一行转换为注释。 @符号表示将值分配给键而不是命名值。
该文件不必存在。 这可用于设置Word.exe以打开Winword.exe。
键入doskey /?将启动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\\"
你已经在另一个答案中被告知了路径。 有关cmd宏的信息,请参阅doskey /?(它们仅在键入时有效)。
您可以为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时执行的命令。
answered 2019-01-01T22:19:10Z
0 votes
控制面板的一个更好的替代方法是使用sourceforge中名为Pathenator的免费软件程序:
[https://sourceforge.net/projects/pathenator/]
但是,它只适用于具有Dot.Net 4.0或更高版本的系统,例如Windows 7,8或10。
Bill Moore answered 2019-01-01T22:19:45Z
0 votes
如果运行命令cmd,它将更新该命令窗口的所有系统变量。
RBXII3 answered 2019-01-01T22:20:06Z
0 votes
我那时已经安装了PHP。 将php-7 ***。zip解压缩到C:\ php \
备份我当前的PATH环境变量:运行php -v,并执行命令:path >C:\path-backup.txt
将我当前的路径值获取到C:\ path.txt文件(以相同方式)
修改path.txt(当然,我的路径长度超过1024个字符,窗口运行几年)我删除了那里的重复路径,比如'C:\ Windows; 或C:\ Windows \ System32; 或C:\ Windows \ System32 \ Wbem; - 我有两次。
还删除卸载的程序路径。 示例:C:\ Program Files \ NonExistSoftware;
这样,我的路径字符串长度< 1024 :)))
在路径字符串末尾添加; C:\ php \
仅将路径值复制到带有框架双引号的缓冲区中! 示例:“C:\ Windows; ****; C:\ php \”没有PATH =应该在那里!!!
以管理员身份打开Windows PowerShell。
运行命令:
php -v
重新运行您的终端(我使用“远程经理”)并检查:php -v
Serb answered 2019-01-01T22:21:44Z