我最近从Windows 8.1升级到Windows 10。
现在我想为Apache Maven的新安装设置一个环境变量。
每次我创建user变量时,事情都很好。然而,我还需要创建系统变量,我需要将bin目录附加到我已经在用户变量中创建的变量为“path”。
现在,每次我这样做,我都会得到一个错误,说“这个环境变量太大了”。因此,我无法创建路径。
我附上了这个错误的图片。
我最近从Windows 8.1升级到Windows 10。
现在我想为Apache Maven的新安装设置一个环境变量。
每次我创建user变量时,事情都很好。然而,我还需要创建系统变量,我需要将bin目录附加到我已经在用户变量中创建的变量为“path”。
现在,每次我这样做,我都会得到一个错误,说“这个环境变量太大了”。因此,我无法创建路径。
我附上了这个错误的图片。
当PATH环境变量重载了太多值时,就会达到不能再添加值的地步。尝试下面的方法应该可以解决你的问题。
解决方案1:
创建一个新的系统环境变量,写入NEWPATH 将bin目录位置分配给'NEWPATH' 现在添加';%NEWPATH%'到PATH环境变量
如果这仍然不起作用,那么尝试将PATH环境变量的一部分已经存在的值复制到'NEWPATH',然后追加'NEWPATH'。
解决方案2:
如果可以对路径进行分组和缩短,请检查PATH环境变量的值。例如,
C:\Program Files\Microsoft SQL Server\102\Tools\Bin;C:\程序文件\Microsoft SQL Server\102\DTS\Bin;
可以组合为
C:\Program Files\Microsoft SQL Server;
通过这种方式,您可以在固定长度的PATH变量中构建更多的空间,并最终将bin目录位置调整为PATH。
我更改了Program Files和programdata的所有变量路径(这一个保存为一个字符,但不那么重要)。
对于Node.js这样的东西,我改变了的正常路径
C:\Program Files\nodejs\
to
%程序文件%\nodejs\
这可以用“C:\Program Files(x86)”来完成,也可以用“%ProgramFiles(x86)%”来完成。
它为我节省了几个角色,但我觉得足够让它停止抱怨了。
除了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(本质上是一个链接,像符号链接一样)分割长路径。
另一种绕过PATH环境可变长度限制的解决方案是使用PowerShell脚本管理路径(添加、删除或更新);
通过点击“编辑文本”(见上面的截图)捕获当前的PATH变量,并将其复制到剪贴板中,并将其保存在文本文件中作为备份,以避免糟糕的意外。这不是强制性的,但可以让您在出现问题时恢复。 现在它已经备份,将以下内容添加到一个新的PowerShell (.ps1)文件中(使用您想要添加的文件夹路径(+号后面的部分)修改下面的第一行:
$newPath = $env:Path + '; C:\Users\....\FirstFolderToAddToPath; C:\Users\....\SecondFolderToAddToPath;'
[Environment]::SetEnvironmentVariable("Path", $newPath, "Machine")
$env:Path = $newPath
这就是我在使用Windows 10 UI后如何设法获得我的(长)PATH变量,被长度限制捕获并丢失了大部分路径。
处理:
请重启系统。重新启动系统后,PATH不再为空,但它可能被截断为2047(4095)个字符
如果系统重启不起作用,请:
启动C: \ windows \ system32系统\ regedit.exe。转到注册表蜂巢“HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment”,从“Path”键清除不必要的目录。重新启动系统。
注意:在某些特殊情况下,如果系统无法启动,请:
请以安全方式登录 打开命令提示符shell并输入: f . reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d SystemRoot^%\system32
详情如下:
限制System PATH变量的长度
有几种方法可以清理路径变量。最简单的是使用快速环境编辑器。这个免费的工具,
删除重复路径(右键单击→清除路径) 删除不存在的文件夹(如红色所示,需要手动删除) 将长路径替换为短路径(右键单击→长路径转换为短路径)。
我按顺序执行上述步骤,并仅对最长路径使用第三步,直到再次控制Path变量大小。
如果你想要更高级,这里有一个c#小工具,你可以修改为任何你想要实现的逻辑。
我发现你可以通过PowerShell来做到。
[System.Environment]::SetEnvironmentVariable("PATH", "C:\Program Files (x86......etc.....", "Machine")
所以我抓取了现有的系统路径,粘贴到记事本,添加我的新东西,然后粘贴到上面的“C:\Program Files”位。日志含义更新路径。完成了。
尝试通过RegEdit进行修改。在我的例子中,当长度超过3000时,它可以工作。
按“Win + R”,输入“regedit”,打开“regedit”。打开“Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment”,将“Path”的值修改为您的路径。重启电脑,应该就能工作了。
显然,快速环境编辑器将为您做这件事(从Shital Shah的回答),但你也可以缩短路径到他们的8.3文件名版本。你将得到很多里程只需这两个替换:
C:\Program Files --> C:\PROGRA~1
C:\Program Files (x86) --> C:\PROGRA~2
如果将当前路径复制到记事本,首先搜索并替换C:\Program Files (x86),然后是C:\程序文件。
所以我发现了同样的问题,我注意到有很多重复的指向同一个位置。 我删除了副本,当你点击“编辑环境变量”按钮时,可以通过删除选项来完成。
你可以编辑文本,从那里复制文本,使用任何流行的应用程序,如记事本,excel(使用分隔符为;然后删除重复的),或者使用python(使用.split(";"),转换成一个集合,";".join(stringSet),复制到一个记事本文件,然后使用ctrl+ H ie查找和替换将\替换为\)。
我发现这个AutoHotkey脚本很有用,用于编辑或添加到我的极长的路径(现在是3743个字符):
https://gist.github.com/roblogic/59898966f3ce594eb78a5b6147013194
(我不知道这么长的路会有什么后果;我可能还得修。)