Adding directory to PATH Environment Variable in Windows
我正在尝试将
我已经使用"环境变量"对话框添加了它。
但当我输入控制台时:
1 | C:\>path |
它不显示新的
1 2 3 4 5 6 7 8 | 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 |
我有两个问题:
选项1
使用GUI更改
这是因为只有在更改后启动的程序才会看到新的
在打开的命令窗口中执行此命令:
1 | set PATH=%PATH%;C:\your\path\here\ |
此命令将
分解:
set –仅为当前的命令会话更改命令的环境变量;其他程序和系统不受影响。PATH= –表示PATH 是要临时更改的环境变量。%PATH%;C:\your\path\here\ –%PATH% 部分扩展到PATH 的当前值,然后;C:\your\path\here\ 连接到它。这就是新的PATH 。
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.
您可以使用
1 | setx /M path"%path%;C:\your\path\here" |
如果要设置用户
笔记:
setx 命令仅在Windows7及更高版本中可用。您应该从提升的命令提示符运行这个命令。
如果只想为当前会话更改它,请使用set。
这只修改注册表。现有进程不会使用这些值。如果新进程在此更改之后启动,并且不从其父级继承旧环境,则新进程将执行此操作。
您没有指定如何启动控制台会话。确保这一点的最佳方法是退出命令shell并再次运行它。然后它应该继承更新的路径。
您不需要任何
1 | PATH |
这将显示路径变量的当前值。现在要向其中添加目录吗?简单类型:
1 | PATH %PATH%;C:\xampp\php |
如果出于任何原因要清除路径变量(完全没有路径或删除其中的所有路径),请键入:
1 | PATH ; |
更新
就像下面评论中提到的DanialWilson,它只在当前会话中设置路径。要永久设置路径,请使用
要检查环境变量是否存在或查看其值,请使用echo commnad:
1 | echo %YOUR_ENV_VARIABLE% |
在这个PowerShell的时代,我会这样编辑路径:
1 2 3 | $PATH = [Environment]::GetEnvironmentVariable("PATH") $xampp_path ="C:\xampp\php" [Environment]::SetEnvironmentVariable("PATH","$PATH;$xampp_path") |
要为所有用户(机器范围)设置变量,最后一行应如下所示:
1 | [Environment]::SetEnvironmentVariable("PATH","$PATH;$xampp_path","Machine") |
在PowerShell脚本中,您可能希望在添加到路径之前检查是否存在
所以把它们放在一起:
1 2 3 4 5 | $PATH = [Environment]::GetEnvironmentVariable("PATH") $xampp_path ="C:\xampp\php" if( $PATH -notlike"*"+$xampp_path+"*" ){ [Environment]::SetEnvironmentVariable("PATH","$PATH;$xampp_path","Machine") } |
安全SETX
对@nafscript最初的
- 默认情况下,
SETX 将更新您的用户路径。 SETX ... /M 将更新您的系统路径。%PATH% 包含附加用户路径的系统路径
警告
ss64 setx页面有一些很好的例子。重要的是,它指出了注册表项对于
User Variables:
HKCU\Environment System Variables:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
使用说明追加到用户EDOCX1[9]
1 2 3 4 5 6 | @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 |
追加到系统
(基本上相同,除了不同的
1 2 3 4 5 6 | @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。不完全正确
参加聚会迟到了——但如果您已经在要添加到路径的目录中,那么很方便。
编辑:根据注释-与标准Windows命令一起使用,但不在PowerShell中使用。
对于PowerShell,
如果使用setx错误地输入路径怎么办?最好的方法就是通过Windows U.I.控制面板->所有控制面板项->系统->高级系统设置->环境变量
向下滚动到路径并选择编辑。您还可以将其复制并粘贴到您最喜欢的编辑器中,这样您就可以看到整个路径并更容易地对其进行编辑。
除了所有的答案,如果您想要一个好的GUI工具来编辑您的Windows环境变量,您可以使用快速环境编辑器。
试试看!使用安全,很棒!
网址:http://www.rapidee.com/en/
- 命令行更改不会是永久性的,在控制台关闭时会丢失。
- 这条路就像先到先得。
- 您可能希望重写其他已包含的可执行文件。例如,如果您的路径上已经有另一个版本,并且您希望添加不同的版本而不对路径进行永久更改,那么应该将目录放在命令的开头。
重写已包含的可执行文件;
set PATH=C:\xampp\php;%PATH%;
关于第2点,我使用的是一个简单的批处理文件,它为我填充
1 2 3 | c:\>mybatchfile -- here all env. are available c:\>php file.php |
在Windows 10 LTSB上检查上述建议,并查看"帮助"大纲(键入"command/?"时可以查看)。把我带到结论:path命令仅为当前会话更改系统环境变量path值,但在重新启动之后,所有值都将重置为默认值-就像在使用path命令之前一样。
另一方面,使用具有管理权限的setx命令更为强大,它可以永久地更改这些值(或者至少在下次使用此命令之前或在下次手动操作这些值之前…).
但是为了清晰起见,我认为在这里共享最好的setx语法用法对我有用的可能有一天会对某人有所帮助:
1 2 | SETX PATH"%PATH%;C:\path\to\where\the\command esides" |
任何等号"="都应该避免,你不必担心空间!不需要再为路径插入任何引号其中包含空格-拆分符号";"执行该操作。
setx后面的path关键字定义了哪些值应该在系统环境变量的可能值之间进行更改,以及引号内的%path%(单词path由百分号包围)告诉操作系统保留现有的路径值,并添加以下路径(拆分后的路径)在现有值上签名";"。
高温高压
使用GTools中的路径
它以直观的方式做事情,例如:
1 2 | pathed /REMOVE"c:\my\folder" pathed /APPEND"c:\my\folder" |
它并显示结果,而无需生成新的命令!
在命令提示中,通过在命令行前面加上
因此,
请注意,您必须注册,就好像它的名称是
程序和文档可以添加到注册表中,因此在"开始-运行"对话框或快捷方式中键入它们的名称而不输入路径,Windows就可以找到它们。
这是一个通用的注册表文件。将下面的行复制到新的文本文档,并将其另存为anyname.reg。用程序或文档编辑它。
在路径中,使用分隔关键路径中的文件夹名称,因为regedit使用单个分隔其关键名称。所有注册表文件都以regedit4开头。分号将一行转换为注释。@符号表示将值分配给键,而不是指定的值。
文件不必存在。这可用于将word.exe设置为打开winword.exe。
键入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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\" |
你已经在另一个答案中被告知了路径。另请参阅
您可以为命令运行启动命令。来自Windows资源工具包技术参考
自动运行
1 2 3 4 | 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)的系统工作。
如果运行命令
备份当前路径环境变量:运行
将当前路径值获取到c:path.txt文件中(相同方式)
- 我删除了其中的重复路径,如"c:windows;或c:windowssystem32;或c:windowssystem32wbem;—我有两次。
- 同时删除未安装的程序路径。示例:c:program filesonexists software;
- 这样,我的路径字符串长度<1024:)
- 在路径字符串末尾添加;c:php
- 仅将路径值复制到带框双引号的缓冲区中!示例:"c:windows;****;c:php"不应该有路径=!!!