我知道这很奇怪,我花了将近3天的时间在网上搜索解决方案而没有得到有用的解决方案。所以我决定来这里。
我最近从Windows 8.1升级到Windows 10.
现在我想为我新安装的Apache Maven设置一个Environment变量。
每次我创建用户变量时,事情都很好。但是,我还需要创建系统变量,我需要将bin目录附加到我在用户变量中创建的变量" path"。
现在,每次我这样做,我都会得到一个说“#34;此环境变量太大”的错误。结果,我无法创建路径。
我附上了此错误的图片。
如果有人能协助我解决这个问题,我将不胜感激。
答案 0 :(得分:96)
当PATH变量因过多的值而过载时,它会达到无法再添加值的程度。尝试以下方法可以解决您的问题。
解决方案1:
如果这仍然不起作用,那么尝试将PATH变量现有值的某些部分复制到' NEWPATH'然后附加' NEWPATH'
解决方案2:
如果可以对路径进行分组和缩短,请检查PATH变量的值。例如,
C:\ Program Files \ Microsoft SQL Server \ 102 \ Tools \ Binn \; C:\ Program Files \ Microsoft SQL Server \ 102 \ DTS \ Bin \;
可以合并到
C:\ Program Files \ Microsoft SQL Server;
通过这种方式,您可以在固定长度的PATH变量中构建更多空间,最后将bin目录位置调整为PATH。
希望这能帮到你!
答案 1 :(得分:26)
清理路径变量的方法很少。最简单的方法是使用Rapid Environment Editor。这个免费的实用程序将,
我按顺序执行上述步骤,并仅将第3步用于最长路径,直到路径变量大小再次处于控制状态。
如果你想更高级,可以在这里little C# tool修改你想要实现的其他逻辑。
答案 2 :(得分:24)
绕过环境PATH可变长度限制的另一种解决方案或更多解决方法是使用PowerShell脚本管理您的路径(添加,删除或更新);
1)单击"编辑文本"捕获当前PATH变量。 (参见上面的屏幕截图)并将其复制到剪贴板并将其保存在文本文件中作为备份,以避免出现意外情况。这不是强制性的,但如果出现问题,您可以恢复。
2)现在它已备份,将以下内容添加到新的PowerShell(.ps1)文件中(修改下面第一行,添加要添加的文件夹路径(+号后面的部分):
$newPath = $env:Path + '; C:\Users\....\FirstFolderToAddToPath; C:\Users\....\SecondFolderToAddToPath;'
[Environment]::SetEnvironmentVariable("Path", $newPath, "Machine")
$env:Path = $newPath
这就是我在使用Windows 10用户界面后设法获取我的(长)PATH变量的方法,被长度限制和失去我的大部分路径所困扰。我希望它有所帮助。
答案 3 :(得分:7)
除了Swapnil的答案之外,请注意您可以修改Path变量中单个路径的最大长度 - 否则在历史上限制为260个字符。
在Windows 10中,您可以通过将LongPathsEnabled
注册表项设置为1来实现此目的,可在此处找到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
要访问注册表编辑器:Windows Key+R
,请键入Regedit
。
来源:https://superuser.com/a/1119980
另请参阅此超级用户答案:https://superuser.com/a/1119980/327009
答案 4 :(得分:5)
迟到的答案,但我正在寻找类似的东西,最后来到这里。我改变了程序文件和程序数据变量的所有路径(这个节省了1个字符虽然不那么重要)。
对于像nodejs这样的东西,我改变了
的正常路径C:\ Program Files \ nodejs \
到
<强>%PROGRAMFILES%\的NodeJS \ 强>
这可以通过“C:\ Program Files(x86)\”以及“%ProgramFiles(x86)%\”
来完成它为我节省了几个字,但足以让我停止抱怨。
答案 5 :(得分:2)
显然,Rapid Environment Editor将为您完成此操作(来自@shital_shah答复),但是您也可以缩短其“ 8dot3”版本的路径。仅通过这两个替换,您将获得很多里程:
C:\Program Files --> C:\PROGRA~1
C:\Program Files (x86) --> C:\PROGRA~2
如果您将当前路径复制到记事本中,请先搜索并替换C:\Program Files (x86)
,然后替换C:\Program Files
。
答案 6 :(得分:1)
解决方法:
请重启系统。重新启动系统后,PATH不再为空,但可能会被截断为2047(4095)个字符 如果系统重启没有帮助请:
启动c:\ windows \ system32 \ regedit.exe转到注册表配置单元“HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment”从“路径”键清除不必要的目录重新启动系统< /强>
注意:在某些特殊情况下,如果系统无法启动,请:
以安全模式登录 打开命令提示符shell并键入: reg添加“HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment”/ v Path / t REG_EXPAND_SZ / d ^%SystemRoot ^%\ system32; ^%SystemRoot ^%/ f
了解更多详情: https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable
答案 7 :(得分:1)
除了其他方法(例如Powershell),我还找到了一个不错的GUI,即“快速环境编辑器”,可以处理较大的文本值。
答案 8 :(得分:0)
添加其他答案,如果您的窗口中有组策略编辑器,请按WINKEY + R并编写gpedit.msc,在左侧树窗口弹出的窗口中,转到:
计算机配置 - &gt;管理模板 - &gt;系统 - &gt;文件系统 并双击“启用Win32长路径”并设置为“启用”。 您可能需要重新启动才能使更改生效。
请注意,作为构建用于管理我正在处理的特定项目的环境变量的工具的人,我可以说当涉及将变量引用到已经引用另一个变量的变量时,Windows环境变量是非常错误的,这是安静的糟透了,为了正确读取这些变量,你需要启动使用evault权限读取这些变量的应用程序(作为管理员),否则它将读取变量为%SOME_VARIABLE%/ Folder1 / Folder2。 这就是为什么我停止使用该功能并使用绝对路径,因为我在我的开发环境的用户和系统环境变量中设置了很多变量。 我建议不要引用已经包含我的经验中的引用变量的变量来避免这种情况。
答案 9 :(得分:0)
我发现您可以通过PowerShell进行操作。
[System.Environment]::SetEnvironmentVariable("PATH", "C:\Program Files (x86......etc.....", "Machine")
因此,我抓取了现有的系统PATH,将其粘贴到记事本中,添加了我的新东西,然后粘贴到上述的“ C:\ Program Files”位中。路径已更新。完成。
答案 10 :(得分:0)
尝试用regedit
进行修改,在我的情况下,当长度超过3000时,它可以工作。
按Win + R
并输入regedit
打开regedit。转到Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
,然后将Path
的值修改为您的路径。并重新启动计算机,它应该可以工作。
答案 11 :(得分:0)
您还可以尝试遍历变量,以查看是否有任何不相关的路径可以删除。这样可以腾出空间来添加其他或更多变量。
答案 12 :(得分:0)
我遇到了完全相同的问题,最终我不得不删除一个现有变量以使总长度<2047。然后我可以在路径变量中添加%MAVEN_HOME%\bin
。
答案 13 :(得分:0)
所以我发现了我遇到的同样问题,我注意到有许多重复项指向同一位置。 当您点击“编辑环境变量”按钮时,我删除了可以使用删除选项完成的重复项。
您可以改为编辑文本、从那里复制文本、使用记事本、excel 等任何流行应用程序删除重复项(使用分隔符 as ;然后删除重复项),或使用 python(使用 .split(";")、转换成一个集合,";".join(stringSet),复制到记事本文件中,然后使用 ctrl+ H 将 \ 替换为 \,即查找和替换)。
答案 14 :(得分:-3)
Workarround。使用编辑文本并在文本编辑器中编辑PATH