MS Windows 问题 - “文件名或扩展名太长”

MS Windows 问题 - “文件名或扩展名太长”

我的几台机器运行 Microsoft Windows。我不知道有多少人知道操作系统中存在这个问题,但文件名不能太长,据我所知,Linux 可以使用较长的名称,我从未在 Linux 机器上遇到过这个问题。

无论如何,每当将文件夹和文件复制到备份驱动器时,我都会遇到问题。我手动备份我的数据,查找和更改文件的名称,这非常繁琐。

是否有一个软件工具可以缩短 Windows 上过长的文件夹或文件名?

我有驱动器映像复制软件,它可以完成这项工作,但我不喜欢这种方式,而且如果名称太长而无法复制,移动文件有时会变得麻烦。

答案1

通常,您可以将文件压缩到存档中,以解决将深/长名称文件结构从一台机器移动到另一台机器时的长度限制。

答案2

只是提到一个我还没有在这里提到过的技巧。

以此文件为例:

C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

此完整文件路径长度为 290 个字符。shell(Windows 资源管理器)和大多数命令行实用程序可能不允许您触碰它。

使用subst如下命令:

subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"

现在您可以按如下方式访问(以及删除、移动等)该文件:

X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

现在文件名只有~235 个字符左右,因此您将不再遇到“文件名太长”的问题。

在 Windows API 中,有一个臭名昭著的常量,称为MAX_PATH。 MAX_PATH 为 260 个字符。 NTFS 文件系统实际上支持最多 32,767 个字符的文件路径。 而且,您仍然可以通过访问 Windows API 函数的 Unicode(或“宽”)版本以及在路径前加上 来使用 32,767 个字符长的路径名\\?\

MAX_PATH已经确定了很长在 Windows 世界中,这种情况已经很久了。我认为这与当时的 ANSI 标准有关……但这是微软现在很难改变的事情之一,因为现在我们有成千上万的程序和应用程序,包括一些微软自己编写的应用程序,MAX_PATH如果常数突然改变,它们就会以奇怪的新方式失败。(缓冲区溢出、堆损坏等)

答案3

http://www.ratsauce.co.uk/notablog/longfilenames.asp

如果您使用完整路径,即以驱动器号开头,并在文件名前加上 \\?\,则可以绕过 260 个字符的长度限制。

JR

答案4

正如前面提到的,整理一个 zip 文件是一种选择。

另一个选择可能是创建一个仅使用 Windows 短名称作为目标的脚本。除非您找到一种方法来跟踪旧文件名和新文件名,否则这样做的缺点是永久重命名所有文件。我今天在工作时刚刚使用了一些 VBScript,它就是用来做这件事的。

更昂贵的解决方案可能是使用第二块硬盘创建镜像设置。

相关内容