用于长路径名的 Windows 资源管理器的替代方案

Tim*_*Tim 28 windows-7 file-management windows-explorer ubuntu

更新:

  1. 我发现不仅 Windows 资源管理器而且其他软件的路径名太长。例如在Firefox中,当我将网页保存到目录中时,如果其名称或路径名太长,我仍然无法执行。Firefox 是否也依赖于 Windows 资源管理器?我该如何解决这个问题?

  2. 两个回复推荐的软件我都试过了。他们中没有人可以访问很长的路径。长路径问题是 Windows 操作系统固有的,无论哪个程序浏览目录?如果是,是否意味着无法绕过它?

原文:我的笔记本电脑上安装了两个操作系统:Windows 7 和 Ubuntu 10.10。他们共享一个分区。

在 Ubuntu 中,通过使用 Nautilus,我可以创建位于共享分区路径层次结构中非常深的目录。但是当切换到 Windows 时,Windows 资源管理器不允许访问位于太深的目录,即路径名太长。

此外,Windows 资源管理器似乎无法访问在目录和文件名中包含特殊字符的 Ubuntu 下创建的文件和目录。

我想知道什么可以解决 Windows 中的问题?例如,是否有其他替代软件可以替代 Windows 资源管理器?

jos*_*736 33

虽然 NTFS 允许路径长度约为 32,000 个字符,但您已经发现Win32 API 的路径长度限制259 个字符

在 Windows API 中([链接文档] 中讨论了一些例外情况),路径的最大长度为MAX_PATH,定义为 260 个字符。

(还有一个NULL附加到路径的终止字符,为我们提供了 259 个可用字符。)

由于资源管理器(和其他几乎所有的Windows应用程序)依赖于Win32 API的访问文件系统,它不是实际得到解决,即使它是这一限制可能

Windows API 有许多函数,这些函数也有 Unicode 版本,以允许最大总路径长度为 32,767 个字符的扩展长度路径。这种类型的路径由反斜杠分隔的组件组成,每个组件最多为函数lpMaximumComponentLength参数中返回的值GetVolumeInformation(该值通常为 255 个字符)。要指定扩展长度的路径,请使用“\\?\”前缀。例如,“\\?\D:\很长的路径”。

不幸的是,您不能只\\?\D:\very long path在资源管理器窗口中输入。应用程序必须设计为利用这些 API 并处理很长的路径名。

在 Windows 下访问扩展长度路径的一种方法是安装Cygwin,这是一个用于 Windows 的 *nix 仿真层。在我的测试中,Cygwin 似乎不受MAX_PATH; bash 和 vi 对 2,000 个字符长的路径没有问题。

请记住,即使您可以使用 bash 浏览扩展长度的路径,您也可能无法在常规 Windows 应用程序中打开这些路径中的文件。例如,notepad在工作目录是一个扩展长度的路径时输入会让你

错误:当前工作目录的路径长于 Win32 工作目录所允许的路径。无法从此处启动本机 Windows 应用程序。

尝试notepad "\\?\D:\very long path\file.txt"也没有用;它启动,但只是说“找不到文件...”尝试用Notepad++进行同样的操作会使其崩溃。(可能是缓冲区溢出。)

访问深埋在扩展长度路径中的特定文件的另一种选择是通过创建 NTFS连接点缩短路径本身。从提升的命令提示符:

D:\> mklink /J jct "\\?\D:\very\long\path"
Run Code Online (Sandbox Code Playgroud)

您现在可以访问D:\very\long\path\from的内容D:\jct\。您不会遇到任何路径长度问题,因为就资源管理器和其他应用程序而言,路径只是D:\jct\(或其他)。NTFS 驱动程序透明地处理重定向路径(“重新分析点”)。

这种方法的缺点显然是您必须在要访问的文件附近创建一个连接点;您仍然不能简单地浏览整个目录结构。

关于特殊字符 ( " * : < > ? \ |),那简直是不行的。这些字符在 Windows 中具有特殊含义,因此无法在路径中使用它们。(Cygwin 允许您创建带有特殊字符的文件,但它是通过用特殊的 Unicode 字符替换这些字符来实现的,然后在读取时将其替换回去。在 Linux 或资源管理器中查看这些 Cygwin 创建的文件看起来不正确,因为Unicode 字符不会被替换回来。)


综上所述,你在做什么需要很长的路径?也许你可以通过重新评估你正在做的事情和避免长路来让你的生活更轻松。有可能,无论如何都不需要那么长的路径


Elo*_*ven 6

我尝试了7-Zip 文件管理器,它似乎可以很好地处理长路径。


Ran*_*son 5

如果您喜欢文本模式应用程序,那么您可能会对 FAR Manager 感兴趣,因为我发现它可以支持比 Windows 资源管理器更深的目录结构(尽管底层 Windows 操作系统本身仍然存在一些限制)。

这是一个原生的 32 位/64 位 Windows 应用程序,与 Norton Commander(从 DOS 是 PC 操作系统的最高统治者的时代)一样,专门从事目录(又名“文件夹”)和文件管理。

我什至看到有报道称它被用作 Windows 资源管理器的替代品,但我没有尝试过,因为在将它用作应用程序的情况下我对它非常满意。 我在下面包含的屏幕截图在右侧具有“目录树”功能,通过按 F9(菜单栏),然后按“R”(右面板菜单),然后按“T”(树面板模式)来激活,这可能是您特别感兴趣的...

  FAR Manager(免费和开源)
  http://www.farmanager.com/

在此处输入图片说明