Windows 7环境variables不在path中工作

我正在尝试使用环境variables设置一些path。 我添加了一个值为“C:\ maven”的环境variables“MAVEN_HOME”。 然后在path中添加“%MAVEN_HOME%\ bin; … rest”。 当我input“echo $ MAVEN_HOME%”时,屏幕上显示正确的“C:\ maven”。 但是当我在“bin”目录下键入“mvn”这个batch file时,找不到它。

所以,我手动添加PATH中的整个path。 “C:\ maven \ bin; … rest”,它能够find“mvn”并执行它。

有人可以帮我做我做错了吗?

我有完全相同的问题,解决它,你可以做两件事之一:

  • 将所有variables放在系统variables而不是用户,并添加你想要的path

要么

  • 将所有variables放在用户variables中,并在用户variables中创build或编辑PATHvariables,而不是在系统中。 系统中的pathvariables不会扩展用户variables。

如果上述都是正确的,但问题仍然存在,则需要检查HKEY_CURRENT_USER \ Environment中的系统registry,以确保“PATH”键types是REG_EXPAND_SZ(而不是REG_SZ)。

检查前一个path和下一个path之间是否有空格字符:

不正确: c:\path1; c:\Maven\bin\; c:\path2\ c:\path1; c:\Maven\bin\; c:\path2\

正确: c:\path1;c:\Maven\bin\;c:\path2\

我的问题变得令人尴尬地简单:

重新启动命令提示符,新的variables应该更新

像你的path中的项目之间有%PATH%或空格的东西将打破它。 被警告。

是的,包含空格的窗口path会导致错误。 例如,一个应用程序将其添加到系统%PATH%variables定义的前面:

 C:\Program Files (x86)\WebEx\Productivity Tools;C:\Sybase\IQ-16_0\Bin64; 

导致%PATH%中的所有path不能在cmd窗口中设置。

我的解决scheme是在需要的地方用双引号将扩展pathvariables标定出来:

 "C:\Program Files (x86)\WebEx\Productivity Tools";C:\Sybase\IQ-16_0\Bin64; 

空格因此被忽略,完整的pathvariables被正确parsing。

需要将%M2%和%JAVA_HOME%添加到USERvariables中的PATHvariables中,而不是SYSTEMvariables中。

如果PATH窗口中有任何错误,将会默默地忽略它。 像你的path中的项目之间有%PATH%或空格的东西将打破它。 被警告

另外值得一提的是,作为pipe理员使用命令提示符 – 我的工作机器上的系统锁意味着在inputmvn时,找不到标准的cmd报告mvn –version

要使用单击“开始>所有程序>附件”,请右键单击“命令提示符”并select“以pipe理员身份运行”。

如果在用户的PATHvariables已连接到环境PATHvariables之后,PATH值太长,则Windows将无法连接用户PATHvariables。

安装新软件后,很容易发生这种情况,并向PATH添加了一些内容,从而破坏了已安装的软件。 Windows失败!

最好的解决方法是编辑控制面板中的一个PATHvariables,并删除不需要的条目。 然后打开一个新的CMD窗口,看看是否所有条目都显示在“echo%PATH%”中。

我有同样的问题,我通过从用户variables中删除PATHEXT来解决它。 它必须只存在于.COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC

还要从用户到系统中删除variables,只在用户variables中包含该path

为了解决这个问题,我使用了setx命令来尝试设置用户级别的variables。

我用下面…

 setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_92" setx PATH %JAVA_HOME%\bin 

注:Windows尝试将提供的variables值附加到现有的variables值。 所以不需要额外的%PATH%…像%JAVA_HOME%\ bin; %path%

将path的值复制到记事本,并检查它是否与terminal窗口中的echo%path%相对应,并根据需要进行更改。 然后删除旧的path值,然后粘贴记事本值。我假设一些不可见的字符由某些安装input损坏的path值。

确保您的系统和用户path设置正确。

问题在于访问权限。 以pipe理员身份运行程序。