更新:
我发现,不只是 Windows 资源管理器,其他软件也受路径名过长的影响。例如,在 Firefox 中,当我将网页保存到目录中时,如果其名称或路径名太长,我仍然无法保存。Firefox 也依赖于 Windows 资源管理器吗?我该如何解决这个问题?
我试过两个回复推荐的软件,都无法访问长路径。长路径问题是否是 Windows 操作系统固有的,无论使用哪个程序浏览目录?如果是,是否意味着没有办法绕过它?
原来的:我的笔记本电脑上安装了两个操作系统:Windows 7 和 Ubuntu 10.10。它们共享一个分区。
在 Ubuntu 中,通过使用 Nautilus,我可以在共享分区上创建位于路径层次结构非常深的目录。但是当切换到 Windows 时,Windows 资源管理器不允许访问位置太深的目录,即路径名太长的目录。
此外,Windows 资源管理器似乎无法访问在 Ubuntu 下创建的目录和文件名中带有特殊字符的文件和目录。
我想知道什么可以解决 Windows 中的问题?例如,是否有其他替代 Windows 资源管理器的软件?
答案1
虽然 NTFS 允许路径长度约为 32,000 个字符,但您发现Win32 API 的 259 个字符路径长度限制。
在 Windows API 中([链接文档]中讨论了某些例外),路径的最大长度为
MAX_PATH
,定义为 260 个字符。
NULL
(路径中另外附加了一个终止字符,这样我们就有 259 个可用字符。)
因为 Explorer(以及几乎所有其他 Windows 应用程序)依赖 Win32 API 来访问文件系统,所以它不是实际的绕过这个限制,尽管可能的:
Windows API 中有许多函数也有 Unicode 版本,允许扩展长度的路径,最大路径总长度为 32,767 个字符。这种类型的路径由用反斜杠分隔的部分组成,每个部分的长度不超过
lpMaximumComponentLength
函数参数中返回的值GetVolumeInformation
(该值通常为 255 个字符)。要指定扩展长度的路径,请使用“\\?\”前缀。例如,“\\?\D:\很长的路“。
不幸的是,您不能直接\\?\D:\very long path
在 Explorer 窗口中键入内容。应用程序必须设计为利用这些 API 并处理非常长的路径名。
在 Windows 下访问扩展路径的一种方法是安装赛格威,Windows 的 *nix 仿真层。在我的测试中,Cygwin 似乎不受限制MAX_PATH
;bash 和 vi 对 2,000 个字符长的路径没有问题。
请记住,即使您可以使用 bash 浏览扩展路径,您可能也无法在常规 Windows 应用程序中打开这些路径中的文件。例如,notepad
在工作目录是扩展路径时键入
错误:当前工作目录的路径长度超过 Win32 工作目录允许的长度。无法从此处启动本机 Windows 应用程序。
尝试notepad "\\?\D:\very long path\file.txt"
也不起作用;它启动了,但只是说“找不到文件...”尝试同样的方法记事本++导致系统崩溃。(可能是缓冲区溢出。)
访问深埋在扩展路径中的特定文件的另一个方法是缩短路径本身通过创建 NTFS连接点. 从提升的命令提示符:
D:\> mklink /J jct "\\?\D:\very\long\path"
D:\very\long\path\
现在您可以从访问 的内容D:\jct\
。您不会遇到任何路径长度问题,因为就 Explorer 和其他应用程序而言,路径只是D:\jct\
(或其他)。NTFS 驱动程序透明地处理路径重定向(“重新解析点”)。
这种方法的缺点显然是您必须在要访问的文件附近创建一个连接点;您仍然不能简单地浏览整个目录结构。
至于特殊字符(" * : < > ? \ |
),这根本行不通。这些字符在 Windows 中具有特殊含义,因此无法在路径中使用它们。(Cygwin 允许您创建包含特殊字符的文件,但它这样做的方式是替换字符带有特殊的 Unicode 字符,然后在读取时将其替换回去。在 Linux 或 Explorer 中查看这些 Cygwin 创建的文件看起来不正确,因为 Unicode 字符不会被替换回去。)
话虽如此,你正在做什么需要很长的路径?也许你可以重新评估你正在做的事情并避免长路径,让你的生活更轻松。很有可能,你反正也不需要那么长的路径。
答案2
我尝试过7-Zip 文件管理器并且它似乎在长路径上运行良好。
答案3
如果您喜欢文本模式应用程序,那么 FAR Manager 可能会引起您的兴趣,因为我发现它可以支持比 Windows 资源管理器更深的目录结构(尽管底层 Windows 操作系统本身仍然存在一些限制)。
这是一个原生的 32 位/64 位 Windows 应用程序,与 Norton Commander(自 DOS 成为 PC 上操作系统的最高统治者以来)一样,专门用于目录(又名“文件夹”)和文件管理。
我甚至看到过有报道称它被用作 Windows 资源管理器的替代品,但我没有尝试过,因为我对将它用作应用程序感到非常满意。 下面我所附的屏幕截图显示了右侧的“目录树”功能,可通过按 F9(菜单栏),然后按“R”(右侧面板菜单),接着按“T”(树面板模式)来激活,这可能对您特别有用...
FAR 管理器(免费、开源)
http://www.farmanager.com/
答案4
你有没有尝试过总指挥官?它是共享软件。它似乎可以处理长路径名,并且总体来说是一个非常有用的文件管理器。