我最近从Windows 8.1升级到Windows 10。

现在我想为Apache Maven的新安装设置一个环境变量。

每次我创建user变量时,事情都很好。然而,我还需要创建系统变量,我需要将bin目录附加到我已经在用户变量中创建的变量为“path”。

现在,每次我这样做,我都会得到一个错误,说“这个环境变量太大了”。因此,我无法创建路径。

我附上了这个错误的图片。


当前回答

除了其他方法(例如,PowerShell),我还发现了一个很好的GUI,“快速环境编辑器”,它可以处理较大的文本值。

其他回答

尝试通过RegEdit进行修改。在我的例子中,当长度超过3000时,它可以工作。

按“Win + R”,输入“regedit”,打开“regedit”。打开“Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment”,将“Path”的值修改为您的路径。重启电脑,应该就能工作了。

除了Swapnil的答案之外,请注意,您可以修改Path环境变量的最大长度—否则将限制为2048个字符(而单个路径的历史限制为206个字符)。

在Windows 10中,你可以通过设置LongPathsEnabled注册表项为1来实现这一点,可以在这里找到:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

进入注册表编辑器:Windows键+ R,输入Regedit。

来源:Windows 10“启用NTFS长路径策略”选项缺失

也看看这个超级用户的答案:Windows 10“启用NTFS长路径策略”选项缺失的答案

请注意,错误“环境变量太大”与整个变量有关,而不是当前添加的单个路径(以回答下面的“不准确建议”评论)。

附加说明:应用程序兼容性

与LongPathsEnabled相关的注册表键/组策略中的文本如下:

启用NTFS长路径将允许明确的win32应用程序和Windows Store应用程序访问超出每个节点260字符限制的路径。启用此设置将使长路径在进程中可访问。

这里需要注意的是“显化”一词。一般来说,应用程序需要在清单文件中显式地声明功能;自Windows Vista时代以来,大多数win32应用程序都得到了体现。要使用长路径,应用程序清单需要一个longPathAware元素:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
        <ws2:longPathAware>true</ws2:longPathAware>
    </windowsSettings>
</application>

更多信息请点击这里。

一些用户抱怨Windows资源管理器和其他应用程序还不支持LongPathsEnabled,尽管通常可以找到可用的替代方案。例如,在这个论坛帖子中,一个用户声明

唯一支持长路径和长文件名的资源管理器是total commander。它还允许编辑文件名和打开/处理文件,如果接受应用程序也使用扩展API函数。 记事本似乎可以。MKVtoolnix。此外,非常令人惊讶的是,MPC-HC,尽管它还没有开发多年。毫不奇怪,糟糕的VLC没有(真的吗?),可爱的PotPlayer也没有。

超级用户对此也有一个有趣的讨论。特别地,这个答案描述了使用长路径的两种可行替代方案:使用Cygwin (*nix模拟层)或使用NTFS Junction Points(本质上是一个链接,像符号链接一样)分割长路径。

我更改了Program Files和programdata的所有变量路径(这一个保存为一个字符,但不那么重要)。

对于Node.js这样的东西,我改变了的正常路径

C:\Program Files\nodejs\

to

%程序文件%\nodejs\

这可以用“C:\Program Files(x86)”来完成,也可以用“%ProgramFiles(x86)%”来完成。

它为我节省了几个角色,但我觉得足够让它停止抱怨了。

解决方法:使用编辑文本按钮并在文本编辑器中编辑您的PATH。

显然,快速环境编辑器将为您做这件事(从Shital Shah的回答),但你也可以缩短路径到他们的8.3文件名版本。你将得到很多里程只需这两个替换:

C:\Program Files       --> C:\PROGRA~1
C:\Program Files (x86) --> C:\PROGRA~2

如果将当前路径复制到记事本,首先搜索并替换C:\Program Files (x86),然后是C:\程序文件。