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

我在几台机器上运行Microsoft Windows。 我不知道在操作系统中是否有很多人知道这个问题,但是你不能有很长的文件名,从我知道的Linux可以有更长的名字,我从来没有遇到过我的Linux机器上的这个问题。

无论如何,当遇到复制文件夹和文件到备份驱动器的问题。 我手动备份我的数据,查找和更改文件名,这是非常非常乏味的。

是否有一个软件工具来缩短文件夹或文件名在Windows上发现很长?

我有驱动镜像复制软件,但是以我不喜欢的方式工作,如果名称太长,复制文件,移动文件有时会变成一个麻烦。

通常情况下,您可以将文件压缩到归档文件中,以便在从一台机器移动深/长名称文件结构时避开长度限制。

只是提到一个技巧,我没有看到在这里提到。

以这个文件为例:

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

这个完整的文件path长度是290个字符。 shell(Windows资源pipe理器)和大多数命令行实用程序可能不会让你触摸它。

像这样使用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个字符的文件path。 而且,通过访问Windows API函数的Unicode(或“wide”)版本,还可以使用32,767个字符长的path名,也可以使用\\?\作为path的前缀。

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

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

如果您使用完整path,即以驱动器号开头,并且使用\\?\作为文件名的前缀,则可以获得260个字符的长度限制。

JR

如前所述,放置一个zip文件是一个选项。

另一个选项可能是创build一个只使用窗口短名称作为目标的脚本。 这有永久重命名您的所有文件的缺点,除非你想出一种方法来跟踪新旧文件名。 我只是在今天的工作中使用一些VBScript来做这件事。

更昂贵的解决scheme可能是创build一个与第二个硬盘驱动器的镜像设置。