路径变量中的文件夹过多


15

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

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


1
我真的不觉得那特别长PATH...是什么让您怀疑它太长了?VS是否抛出某种错误?另外,您正在运行什么版本的Windows?
13年

@bosco我怀疑它太长了,因为命令提示符找不到诸如的简单命令ping另外,这似乎在Visual Studio中并不罕见这里还提到了使用命令行对PATH的限制在2000
CC Inc

Visual Studio 2012在启动时引发错误“调用的目标已引发异常”。当我查看ActivityLog.xml时,它告诉我The type initializer for 'Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService' threw an exception.
CC Inc

2
堆栈溢出问题#4405091的可接受答案中的各种黑客和解决方案:)
bosco

Answers:


13

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

它们中的大多数都存在,因此如果快捷方式没有为“目标”设置完整路径,或者如果快捷方式中未正确设置“开始于”或启动奇怪,则它们的程序及其各个部分始终找到了。在大多数情况下,它是故障安全的。您仍然希望完全测试删除了其路径的任何程序的使用情况。
这对于在CMD提示符下键入命令的人员也非常有用,即使没有CD,计算机也会扫描每个位置,直到找到并运行具有该名称的程序。或任何其他同名命令:-)

该路径集WAS(anchient)限制为少于255(or260)个字符,很久以前更改为1024,然后在server'03时代进行了修补以处理2048,并且据说可以在某些系统上处理8096,甚至很久以前。

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

http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms682653(v=vs.85).aspx,Microsoft表示:

“用户定义的环境变量的最大大小为32,767个字符。环境块的大小没有技术限制。但是,实际的限制取决于访问该块的机制。例如,批处理文件无法设置比最大命令行长度长的变量。”

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

展开后,CMD提示和批处理限制为2048个字符,据说是新系统的4倍(需要引用,因为人们没有看到它)

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

为了确保其中的条目正确无误,Wiki上这样说:http :
//en.wikipedia.org/wiki/Environment_variable

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

在其中拥有所有多余的路径会使某些事情放慢很多,因为然后它被迫在放弃之前在所有这些地方查看。即使在批处理或使用CMDprompt时,无论何时调用文件项,使用完整路径总是会更快。

使用旧的DOSlike 8.3约定是缩小大小的一种方法,此Batch /programming//a/20362922 效果很好。确保(再次)备份原始字符串。另请参阅有关该问题的其他可能解决方案。

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

我会心跳加速,而AMD的程序之前已经在其中添加了一条扩展路径,然后扔掉了,Adobee只有一条,对于标准的GUI快捷方式/图标方法,这些都不重要。可以删除许多内容,然后测试所有功能。如果通过在CMD提示符下键入来调用内容,则删除这些路径将不起作用。


所以您是说如果删除路径,应用程序不会失败?
CC Inc

Windows 7 64位
CC Inc

您知道那里已经卸载了吗?取出Qt,AMd和Nividia(在备份后)maby,然后看它是否足够短?我张贴了我的,大约140个字符。
Psycogeek

好吧,我去看看..
CC公司

3
限制似乎是2048个字符。在那之后,我不能再在环境变量GUI中输入任何字符。
Mateen Ulhaq 2015年

9

我的道路上有几个与软件开发相关的环境变量,所有这些都很重要。

上面的解决方案对我不起作用,所以我去了目录连接

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

mklink / jc:\ d \ sql“ C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \”

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

当您最终从计算机上卸载东西时,这可能是个问题,因为结点将保留在路径中,并且您必须手动清理它们。


1
我有一个相当典型的开发环境,最新的VS +几个旧版本和SQL Server已安装。到目前为止,这是最好的解决方案。抛弃路径的公认答案是荒谬的。
网格

您将C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \的注册表路径条目更改为什么?c:\ d \ sql吗?
OutOFTouch 2015年

如果您的意思是PATH环境变量,那么可以。我对SQL Server目录的其他引用没有感到困惑。
朱利诺2015年

这是一个关于硬链接的不错的小教程:howtogeek.com/howto/16226/…–
ofer.sheffer

1

尽管路径中的最大允许长度更长,但我在Stack Overflow上对此主题(以及Microsoft参考)的权威性答案中发现,最大扩展路径值为2048字节将起作用,而任何超出此范围的长度都会引起问题。“扩展”是指用%分隔符表示的任何变量都将插入其值,以成为扩展值,并且扩展总长度不得超过2048个字节。我注意到,它导致的问题类型(从Windows 7开始)是:

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

就个人而言,我建议您使用Windows以外的其他操作系统,但是如果遇到这种情况,则必须花一些时间删除路径条目,进行测试以确保它不会破坏任何内容,并将路径值减小到2048字节。


目前尚不清楚此答案如何回答作者的问题,至少比现有答案回答得更多,后者为备份他们的陈述提供了实际证据。
Ramhound,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.