把php的路径加到系统环境内,关于命令行:在Windows中将目录添加到PATH环境变量...

我正在尝试将C:\xampp\php添加到Windows中的系统PATH环境变量中。

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

但当我输入控制台时:

C:\>path

它不显示新的C:\xampp\php目录:

PATH=D:\Program Files\Autodesk\Maya2008\bin;C:

uby192\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变量添加目录?

这是一个话题,因为这是一个关于"程序员常用的工具"的问题。如果您是在Windows上开发的,并且您从未需要修改路径,我会感到惊讶。为了满足与编程相关的需求,我强调了投票最高的答案所指出的:您可以通过控制台(或通过批处理文件)以编程的方式进行此操作。

感谢大家对@georgestocker的评论,是的,我是以编程的方式完成的,但是我还没有想到在控制台会话中应用更改后需要重新登录。(我认为只有在我的情况下)但是投票最高的回答通常能回答这个问题。

@乔治同意了,但事实上,这个问题是为超级用户编写的,而不是堆栈溢出。超级用户将提供有关个人使用的Web服务器配置的帮助。堆栈溢出用于编程问题。

退出并打开新控制台…如果您使用的是bash,则可能需要重新启动系统才能保持更改,这取决于您使用的方式/内容。

选项1

使用GUI更改PATH后,关闭并重新打开控制台窗口。

这是因为只有在更改后启动的程序才会看到新的PATH。选项2

在打开的命令窗口中执行此命令:

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

此命令将C:\your\path\here\附加到当前的PATH上。

分解:

set–仅为当前的命令会话更改命令的环境变量;其他程序和系统不受影响。

PATH=–表示PATH是要临时更改的环境变量。

%PATH%;C:\your\path\here\–%PATH%部分扩展到PATH的当前值,然后;C:\your\path\here\连接到它。这就是新的PATH。

@Ilya:我的意思是在mycomputer->properties->advanced->env variables->path中更改路径后,您可以打开控制台窗口。一些Windows应用程序将在启动后传播环境变量更改,而有些则不会。winxp cmd.exe没有。

如果我退出控制台并重新运行,我必须重置路径。你知道如何使这一变化成为永久性的吗?

@如果您遵循"我的电脑"、"属性"、"高级"、"环境变量"、"路径",请使用david tainthewong。并将目录添加到该字符串的末尾,它将保持不变。更改后一定要打开控制台。

是的@theb3rv,做一些简单的事情是很长的路。奇怪的是,控制台中没有可以键入的持久命令

@david tain2331;wong刚刚发现"setx是一种进行持久性更改的方法,比如对话框。"所以setx命令应该这样做。

这不是持久的。一旦关闭控制台窗口,更改将丢失。

@我想要么我不够清楚要么你没看到答案的前半部分。

如果路径已经存在怎么办?最好检查一下是否存在

您的答案似乎只对会话有效,只要我退出并打开一个新的命令提示,路径就会保持在开始时的状态。

"更改系统路径后打开控制台窗口"…这真的有帮助。谢谢您

WARNING: This solution may be destructive to your PATH, and the stability of your system. As a side effect, it will merge your user and system PATH, and truncate PATH to 1024 characters. The effect of this command is irreversible. Make a backup of PATH first. See the comments for more information.

Don't blindly copy-and-paste this. Use with caution.

您可以使用setx命令永久添加到PATH的路径:

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

如果要设置用户PATH,而不是系统PATH,请删除/M标志。

笔记:

setx命令仅在Windows7及更高版本中可用。

您应该从提升的命令提示符运行这个命令。

如果只想为当前会话更改它,请使用set。

SETX /M path"%path%;C:\Program Files (x86)\Git\bin"设置机器级的路径值

为什么这不是公认的答案?我想大多数人都想永久地走自己的路…

@接受的回答也是永久性的。唯一一个不是的是使用SET的疯狂上票。

另请参见使用setx克服1024字符限制

警告:由于使用了%PATH%变量,此命令将全局env变量与用户变量合并。不是吗?这可能会产生不必要的副作用,尤其是使用/m开关时。

警告2:%PATH%变量可能与环境变量不同步,因为它在启动命令提示符时加载,以后再也不会重新加载(即使在执行setx命令时)。此外,它还可能被以前执行的脚本在本地更改。

不适合我。至少在使用"set"而不是"setx"时。我需要在变量名和值之间添加一个=即set path=…"

@过度优化,这是因为混淆的SET和SETX有相似但不同的语法。SET PATH=...对SETX PATH ...的比较

再次警告:由于此方法合并/截断数据,请确保首先备份您的%path%变量值。我知道,这似乎很明显,但我不习惯这种破坏性的和永久性的行为,因为我们的日子里只有这么一点指挥权(特别是自从我多年来一直在玩弄道路以来)。当它把我的道路弄乱的时候,我想能够恢复它,并且…我不是:)这个答案应该得到一个更明确的警告,即这个方法将同时成为add data、truncate data和non-reversible。

最后,我可以在Windows中获得真正的Linux体验。让我想起devrant.com/rants/618148/rant

这只修改注册表。现有进程不会使用这些值。如果新进程在此更改之后启动,并且不从其父级继承旧环境,则新进程将执行此操作。

您没有指定如何启动控制台会话。确保这一点的最佳方法是退出命令shell并再次运行它。然后它应该继承更新的路径。

嗯,不,它实际上只修改注册表。在控制面板对话框中这样做应该有点明显,而不是用path命令来提示命令。如果您关心的话,您可以通过SysInternals的流程监视器轻松观察它的工作。使用路径不同,当控制台关闭时,您所做的任何更改都将丢失。setx是一种进行持久性更改的方法,如对话框。

这是正确的。在控制台会话接收新的环境变量之前,您总是需要重新启动它。

如果从应用程序发送WM_SETTINGCHANGE消息,控制台会话会更新变量吗?stackoverflow.com/a/8358361

理论上是可能的,我所知道的任何实际的CRT实现都不能做到这一点。资源管理器。

背景信息证实了这一点:blogs.msdn.microsoft.com/oldnewthing/20150915-00/?P=91591

是的,当我需要一个环境变量同时保存在Windows注册表中并可在活动会话中立即使用时,它会实现,而且我已经实现了这一功能几次。

您不需要任何set或setx命令,只需打开终端并键入:

PATH

这将显示路径变量的当前值。现在要向其中添加目录吗?简单类型:

PATH %PATH%;C:\xampp\php

如果出于任何原因要清除路径变量(完全没有路径或删除其中的所有路径),请键入:

PATH ;

更新

就像下面评论中提到的DanialWilson,它只在当前会话中设置路径。要永久设置路径,请使用setx,但请注意,虽然这会永久设置路径,但不会在当前会话中设置,因此您必须启动新的命令行来查看更改,更多信息请参见此处。

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

echo %YOUR_ENV_VARIABLE%

它起作用了:)那怎么样!路径%path%;'我记得

我认为这只适用于命令会话的实例,使用setx永久更改它。

不要在这里加引号。例如,调用PATH %PATH%;C:\Program Files\...,而不是PATH"%PATH%;C:\Program Files\..."

它奏效了。谢谢

不要使用SETX!您有截断路径变量的风险,会丢失您花费时间设置的许多其他路径。注意上面的警告。

@史威尔逊,看你的评论太晚了!

在这个PowerShell的时代,我会这样编辑路径:

$PATH = [Environment]::GetEnvironmentVariable("PATH")

$xampp_path ="C:\xampp\php"

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

要为所有用户(机器范围)设置变量,最后一行应如下所示:

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

在PowerShell脚本中,您可能希望在添加到路径之前检查是否存在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")

}

使用Machine参数调用SetEnvironmentVariable时,需要打开具有管理员权限的PowerShell

令人失望的是,这个"强大"的shell无法识别%userprofile%和$userprofile.。但是,这又是我们要说的窗户

不过,这应该是正确的答案

@艾伯德,你要找的是埃多克斯1〔5〕。

您还应该在GetEnvironmentVariable的调用中指定user或Machine。否则,$PATH将包含注册表的用户和机器部分的值,当再次存储路径变量时,这些值将不必要地放大路径变量。

安全SETX

对@nafscript最初的SETX答案的所有评论表示赞同。

默认情况下,SETX将更新您的用户路径。

SETX ... /M将更新您的系统路径。

%PATH%包含附加用户路径的系统路径

警告

备份你的PATH-SETX将截短你超过1024个字符的垃圾邮件。

不要调用SETX %PATH%;xxx—将系统路径添加到用户路径中

不要调用SETX %PATH%;xxx /M—将用户路径添加到系统路径中

过度使用批处理文件会导致盲目性1

ss64 setx页面有一些很好的例子。重要的是,它指出了注册表项对于SETX和SETX /M的位置。

User Variables:

HKCU\Environment

System Variables:

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

使用说明追加到用户EDOCX1[9]

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

(基本上相同,除了不同的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

选择

最后,还有一个名为setenv的改进版本,由ss64 setx页面推荐,该页面可以分割设置用户或系统环境变量。

1。不完全正确

参加聚会迟到了——但如果您已经在要添加到路径的目录中,那么很方便。

set PATH=%PATH%;%CD%

编辑:根据注释-与标准Windows命令一起使用,但不在PowerShell中使用。

对于PowerShell,%CD%等价物是[System.Environment]::CurrentDirectory。

我的PowerShell说无法识别%cd%。

但在cmd.exe中是正常的。

@Paulomatos可以尝试使用[System.Environment]::CurrentDirectory

如果使用setx错误地输入路径怎么办?最好的方法就是通过Windows U.I.控制面板->所有控制面板项->系统->高级系统设置->环境变量

向下滚动到路径并选择编辑。您还可以将其复制并粘贴到您最喜欢的编辑器中,这样您就可以看到整个路径并更容易地对其进行编辑。

这正是OP所做的。(……所以我通过"我的电脑">"属性">"高级">"环境变量">"路径"…)添加了这个目录,然后他问为什么它没有出现在他的命令提示符中。

除了所有的答案,如果您想要一个好的GUI工具来编辑您的Windows环境变量,您可以使用快速环境编辑器。

试试看!使用安全,很棒!

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

Windows10已经显著改进了路径环境变量编辑器。他们只花了20年的时间就找到了答案。

命令行更改不会是永久性的,在控制台关闭时会丢失。

这条路就像先到先得。

您可能希望重写其他已包含的可执行文件。例如,如果您的路径上已经有另一个版本,并且您希望添加不同的版本而不对路径进行永久更改,那么应该将目录放在命令的开头。

重写已包含的可执行文件;

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

关于第2点,我使用的是一个简单的批处理文件,它为我填充PATH或其他环境变量。因此,默认环境变量没有污染。从任何地方都可以访问此批处理文件,因此我可以键入:

c:\>mybatchfile

-- here all env. are available

c:\>php file.php

这是*nix es和windows之间的一个重要区别。批处理在同一个shell中运行,环境的更改将在它退出后保留(在会话范围内)。但是,这两种方式都可以:批处理文件可以消除您的环境。(顺便说一句,不信,你只需要把这样的文件交给source,比如. mybatchfile)。

您好,@grzegorz gajos,我正在寻找确切的信息,您的链接获得更多详细信息,给出404。有其他选择吗?

抱歉,链接中的内容不再可用。我搬走了。

在Windows 10 LTSB上检查上述建议,并查看"帮助"大纲(键入"command/?"时可以查看)。把我带到结论:path命令仅为当前会话更改系统环境变量path值,但在重新启动之后,所有值都将重置为默认值-就像在使用path命令之前一样。

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

但是为了清晰起见,我认为在这里共享最好的setx语法用法对我有用的可能有一天会对某人有所帮助:

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

esides"

任何等号"="都应该避免,你不必担心空间!不需要再为路径插入任何引号其中包含空格-拆分符号";"执行该操作。

setx后面的path关键字定义了哪些值应该在系统环境变量的可能值之间进行更改,以及引号内的%path%(单词path由百分号包围)告诉操作系统保留现有的路径值,并添加以下路径(拆分后的路径)在现有值上签名";"。

高温高压

使用GTools中的路径

它以直观的方式做事情,例如:

pathed /REMOVE"c:\my\folder"

pathed /APPEND"c:\my\folder"

它并显示结果,而无需生成新的命令!

在命令提示中,通过在命令行前面加上start,告诉命令行使用explorer的命令行。

因此,start Yourbatchname。

请注意,您必须注册,就好像它的名称是batchfile.exe。

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

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

在路径中,使用分隔关键路径中的文件夹名称,因为regedit使用单个分隔其关键名称。所有注册表文件都以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宏(它们只在键入时工作)。

您可以为命令运行启动命令。来自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时执行的命令。

控制面板的一个更好的选择是使用这个来自sourceforge的免费软件程序,叫做pathenator:

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

但是,它只为具有.NET 4.0或更高版本(如Windows 7、8或10)的系统工作。

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

那次我安装了PHP。已将php-7***.zip提取到c:php中

备份当前路径环境变量:运行cmd,执行命令:path >C:\path-backup.txt。

将当前路径值获取到c:path.txt文件中(相同方式)

modify path.txt(当然,我的路径长度超过1024个字符,Windows运行几年)

我删除了其中的重复路径,如"c:windows;或c:windowssystem32;或c:windowssystem32wbem;—我有两次。

同时删除未安装的程序路径。示例:c:program filesonexists software;

这样,我的路径字符串长度<1024:)

在路径字符串末尾添加;c:php

仅将路径值复制到带框双引号的缓冲区中!示例:"c:windows;****;c:php"不应该有路径=!!!

以管理员身份打开Windows PowerShell。

运行命令:

setx path"Here you should insert string from buffer (new path value)"

重新运行终端(我使用"far manager")并检查:php -v

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值