Windows 如何创建名称超过260个字符的文件夹

Windows 如何创建名称超过260个字符的文件夹,windows,winapi,windows-server-2008,directory,windows-7-x64,Windows,Winapi,Windows Server 2008,Directory,Windows 7 X64,我想务实地创建一个文件夹层次结构。但问题是在某些情况下,文件夹名称超过260个字符,并且文件夹创建失败。我使用Win32文件名称空间创建了此文件夹层次结构。 我想创建以下格式的文件夹结构驱动器号:\FOLDER1\FOLDER2\FOLDER3\FOLDER4……。\FOLDER(N-1)\FOLDER(N) FOLDER1、FOLDER2、FOLDER3等是文件夹的名称。这些名称的长度超过260个字符 例如: 文件夹1名称为QWERTYUIOPASDFGHJKLZXCVBNMQWERTYUIO

我想务实地创建一个文件夹层次结构。但问题是在某些情况下,文件夹名称超过260个字符,并且文件夹创建失败。我使用Win32文件名称空间创建了此文件夹层次结构。 我想创建以下格式的文件夹结构驱动器号:\FOLDER1\FOLDER2\FOLDER3\FOLDER4……。\FOLDER(N-1)\FOLDER(N)

FOLDER1、FOLDER2、FOLDER3等是文件夹的名称。这些名称的长度超过260个字符 例如:

文件夹1名称为QWERTYUIOPASDFGHJKLZXCVBNMQWERTYUIOPASDFGHJKLZXCVBNMQWERTYUIOPASDFGKLZXCVBNMQWERTYUIOPASDFGKLZXCVBNMQWERTYUIOPASDFGKLZXCVBNMQWERTYUIOPASDFGHJKLZVBNMQWERTYUIOPASDFGHJKLZVBNMQWERTYUIOPASDFG

文件夹2名称为MNBVCxZLKJHGFDSAPOIUYTREWQMNBCxZLKJHGFDSAPOIUYTREWQMNBCxZLKJHGFDSAPOIUYTREWQMNBCxZLKJHGFDSAPOIUYTREWQMNBCxZLKJHGFDSAPOIUYTREWQMNBCxZLKJHGFDSAPOIUYTREWQMNBCxZLKJHGFDSAPOIUYTREWQMNBCxZLKJHGFDSAPOIUYTREWQMNBCxZLKJHGFDSAPOIUYTREWQMNBCxZLKKKKKKJFGFDZLKKKKKKKJFGFD

这样就行了

如何克服此文件夹名/文件名长度限制

操作系统:Windows 7 64位和Windows Server 2008 R2 64位

请帮助

MSDN向您解释以下内容:

要将此限制扩展到32767个宽字符,请调用Unicode 函数的版本,并将
\\?\
前置到路径。更多 有关详细信息,请参见命名文件

另见:

NTFS支持最多32K(32767个宽字符)的文件名。你需要 仅使用正确的API和正确的文件名语法。基本规则 is:文件名应以
\\?\
开头,如
\\?\C:\Temp
。相同的 可与UNC一起使用的语法:
\\?\Server\share\Path

MSDN向您解释了这一点:

要将此限制扩展到32767个宽字符,请调用Unicode 函数的版本,并将
\\?\
前置到路径。更多 有关详细信息,请参见命名文件

另见:

NTFS支持最多32K(32767个宽字符)的文件名。你需要 仅使用正确的API和正确的文件名语法。基本规则 is:文件名应以
\\?\
开头,如
\\?\C:\Temp
。相同的 可与UNC一起使用的语法:
\\?\Server\share\Path


您可以使用以下两个技巧之一:

  • 要创建路径长度超过260个字符的文件夹结构,如
    C:\folder1\folder2\…\folder20
    ,您可以创建
    C:\folder19
    C:\folder20
    ,然后将
    folder20
    及其所有子文件夹移动到
    C:\folder19
    ,然后创建
    C:\folder18
    并将
    C:\folder19
    folder20
    一起移动到
    C:\folder18
    内部。重复此操作,直到完成此结构的创建
  • 您可以使用
    \?\C:\folder1\folder2\…\folder20
    符号创建路径。更多信息如下:(搜索单词最大路径长度限制)

您可以使用以下两种技巧之一:

  • 要创建路径长度超过260个字符的文件夹结构,如
    C:\folder1\folder2\…\folder20
    ,您可以创建
    C:\folder19
    C:\folder20
    ,然后将
    folder20
    及其所有子文件夹移动到
    C:\folder19
    ,然后创建
    C:\folder18
    并将
    C:\folder19
    folder20
    一起移动到
    C:\folder18
    内部。重复此操作,直到完成此结构的创建
  • 您可以使用
    \?\C:\folder1\folder2\…\folder20
    符号创建路径。更多信息如下:(搜索单词最大路径长度限制)
单个路径组件(例如文件夹名或文件名)受返回的
MaximumComponentLength
值的限制。这在理论上是特定于文件系统的,但在实践中总是255

所以,除非您自己制作支持更长文件组件的文件系统驱动程序,否则您无法按要求执行。但是,您可以创建一个总长度超过260个字符的路径,就像其他答案中的指针一样。

单个路径组件(例如文件夹名或文件名)受返回的
MaximumComponentLength
值的限制。这在理论上是特定于文件系统的,但在实践中总是255


所以,除非您自己制作支持更长文件组件的文件系统驱动程序,否则您无法按要求执行。然而,您可以做的是创建一个总长度超过260个字符的路径,就像其他答案中的指针一样。

您将得到错误代码123:error\u INVALID\u NAME。下面是您可能测试的代码:
CreateDirectory(L“\\\\?\\C:\\qwertyuiopasdfghjklzxcvbnqwertyuiopasdfghjklzxcvbnqwertyuiopasdfghjklzxcvbnqwertyuiopasdfghjklzxcvbnqwertyuiopasdfghjklzxcvbnqwertyuiopasdfghjklzvcnqvbbnqwertyuiopasdfghjklzvbjkkkkkkkkkvbqwwwwwwwwwfgjjjkkkkkkkkkkvbjjjjjkkkkkvbjjjjjkkkkkkkkkvbjjjjjjjjjvvvvbjjjjjjjjjjj
您将得到错误代码123:error\u INVALID\u NAME。以下是您可能测试的代码:
CreateDirectory(L)\\\\?C:\\QWERTYUIOPASDfGhKlzxCvNmqwertyUIOPASDfGhKlzxCvNmqwertyUIOPASDfGhKlzxCvNmqwertyUIOPASDfGhKlzxCvNmqwertyUIOPASDfGhKlzxCvNmqwertyUIOPASDfGhKlzCvNmqwertyUIOPASDfGfGhKlzKlzCvNmqwertyUIOPASDfGfGfGfGhKlzKlzCvNmqwKvNmqwertyUIOPASDfGfGfGfGfGfGfGfGfGfGvNmxCvNmxCvNmxCvNmqwKly;
看起来这些技巧在Windows 10上不再有效。两者都给出了一个错误,表示路径太长。看起来这些技巧在Windows 10.Bo上不再有效