路径变量中的文件夹太多

路径变量中的文件夹太多

我遇到了一个奇怪的问题 - 我无法启动 Visual Studio,也无法从命令提示符运行简单的命令,似乎是因为我的 PATH 变量太长。现在我查看了一下,发现许多公司已将其安装目录添加到 PATH 变量中。

我想知道为什么这些公司将他们的文件夹添加到路径中(也许是为了更简单地执行他们的程序?),哪些是必要的,哪些是我可以删除的。如果我删除其中一些,我将无法启动程序吗?(以下是路径中当前存在的内容)

答案1

可以减少环境变量 PATH 中过多的路径数量,只需将整行保存到记事本中作为备份,然后删除一些并进行测试。

大多数快捷方式都存在,因此如果快捷方式没有为“目标”设置完整路径,如果快捷方式中的“起始位置”设置不正确或启动方式奇怪,则始终可以找到其程序及其部分和片段。在大多数情况下,这是一种故障保护。您仍然希望全面测试已删除其路径的任何程序的使用情况。
对于在 CMDprompt 中输入命令的人来说,它也非常有用,即使没有 CD,计算机也会扫描每个位置,直到找到并运行同名程序。或任何其他同名命令 :-)

该组路径曾经(古老)被限制为少于 255(或 260)个字符,很久以前就更改为 1024 个,然后在 server'03 时代进行了修补以处理 2048 个,并且据称甚至可以在某些系统上处理 8096 个,甚至很久以前。

今天人们发现的真正的限制是在 CMDprompt 中,它对命令字符串的长度有限制,其中包括变量和路径的扩展。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx微软在这里表示:

“用户定义的环境变量的最大大小为 32,767 个字符。环境块的大小没有技术限制。但是,根据用于访问块的机制,存在实际限制。例如,批处理文件不能设置长度超过最大命令行长度的变量。”

在该位置^它们指向包含系统路径的注册表位置HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 必须在那里读取其余部分。

一旦扩展,CMDprompt 和批处理限制将为 2048 个字符,据说新系统的限制是这个数字的 4 倍(需要引用,因为人们没有看到这一点)

另请参阅http://support.microsoft.com/kb/830473,讨论了旧系统的命令提示符和批处理长度。

为了确保其中的条目正确无误,维基百科有如下说明:
http://en.wikipedia.org/wiki/Environment_variable

%PATH% 此变量包含以分号分隔的 (不要在中间留空格) 目录列表,命令解释器将在其中搜索与给定命令匹配的可执行文件。表示路径的环境变量可以嵌套在 PATH 变量中,但只能嵌套一层间接层。如果此子路径环境变量本身包含表示路径的环境变量,则 PATH 将无法在变量替换中正确扩展。

将所有额外路径放在那里会使某些事情变得相当慢,因为它会被迫在所有这些位置进行查找,然后才会放弃。调用文件项时使用完整路径总是会更快,即使在批处理或使用 CMDprompt 时也是如此。

使用旧的 DOSlike 8.3 约定是缩小尺寸的一种方法,此批处理https://stackoverflow.com/a/20362922 效果很好。请务必(再次)备份原始字符串。另请参阅该问题的其他可能解决方案。

这是我的情况,情况更糟了。
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\QuickTime\QTSystem\

我会毫不犹豫地抛弃 quicktime,AMD 的程序之前也在其中放了一个扩展路径,我抛弃了它,Adobee 有一个,这些对于标准 GUI 快捷方式/图标方法来说都不重要。许多东西都可以删除,然后测试所有功能。如果您通过在 CMD 提示符中键入来调用东西,那么删除这些路径将不起作用。

答案2

我的路径上有几个与软件开发相关的环境变量,它们都很重要。

上述解决方案对我来说不起作用,所以我选择了目录连接点

  • 选择我的 PATH 中的一些最长的路径(例如C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\
  • 创建一个小文件夹来存储我的连接点:C:\d\
  • 为长路径创建短连接点:
mklink /j C:\d\sql "C:\Program Files (x86)\Microsoft SQL
Server\100\Tools\Binn\VSShell\Common7\IDE\"

在 15 条路径上执行此操作将 PATH 从 2045 个字符减少到 1285 个字符。

当您最终从机器上卸载东西时可能会出现问题,因为连接点会保留在路径中,您必须手动清理它们。

答案3

虽然路径中允许的最大值要长得多,但我在 Stack Overflow 上找到了有关此主题(以及 Microsoft 参考资料)的权威答案,其中指出扩展2048 字节的路径值可以正常工作,任何超过该值的值都会导致问题。我所说的“扩展”是指任何用 % 分隔符表示的变量都将插入其值以成为扩展值,并且总扩展长度不得超过 2048 字节。我注意到它导致的问题类型(截至 Windows 7)如下:

  • 无法识别值末尾的路径
  • 安装修改 PATH 值的软件或补丁会导致运行时值变为 NULL,从而导致运行 Windows 时出现各种问题,例如,所有“开始”菜单、桌面和任务栏图标都会丢失其图像,并且简单的命令提示符命令(如“ping”或“ipconfig”)会显示无法识别的错误
  • 依赖 PATH 值的应用程序失败

就我个人而言,我推荐 Windows 以外的其他操作系统,但如果您坚持使用该系统,那么您必须花费数小时删除路径条目,进行测试以确保它不会破坏任何东西,并将路径值降低到 2048 字节。

相关内容