我们的一位客户习惯使用非常长的路径名(几个嵌套的文件夹,并带有长名称),并且我们经常遇到“用户培训问题”,以将路径缩短到少于260个字符。
是否有可用的技术解决方案,我们可以在Windows 7和Windows 2008 R2中轻按某种开关来说:“是的,请忽略这些历史问题,并使+260字符路径名起作用”。
PS我已经阅读并且完全被命名文件,路径和命名空间所统一
我们的一位客户习惯使用非常长的路径名(几个嵌套的文件夹,并带有长名称),并且我们经常遇到“用户培训问题”,以将路径缩短到少于260个字符。
是否有可用的技术解决方案,我们可以在Windows 7和Windows 2008 R2中轻按某种开关来说:“是的,请忽略这些历史问题,并使+260字符路径名起作用”。
PS我已经阅读并且完全被命名文件,路径和命名空间所统一
Answers:
可以使用这些方法,但是在Microsoft重新编码文件浏览器小部件之前,我们几乎已经陷入了这个老问题。它不是最理想的,但这就是它的工作方式。
只是提到一个技巧,我在这里还没有提到。
以这个文件为例:
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标准有关...但这是Microsoft现在很难更改的事情之一,因为现在我们有成千上万的程序和应用程序(包括一些由Microsoft自己编写的程序和应用程序)MAX_PATH
如果常量突然更改,它将以奇怪的新方式失败。(缓冲区溢出,堆损坏等)
subst
使用目录结点的方法,如果您只是想进行一些快速更改,则清理起来可能更方便。我使用链接外壳扩展,但你可以只使用mklink
命令,像这样:mklink /J C:\Wow "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"
。
您可以使用\\?\ C:表示法来解决此限制。难看,但它支持的文件长度最大为2 ^ 15。
http://msdn.microsoft.com/zh-CN/library/aa365247(v=vs.85).aspx#maxpath
c:\usr-data
到`c:\ Users \ VeryLongUserName \ LongFolderName`并告诉他使用前者,但是如果他定期用40多个字符命名文件夹,则将无济于事
Microsoft现在从Windows 10开始具有针对此问题的可用修复程序,在“ 命名文件,路径和命名空间 MSDN”文章中对此进行了说明。
darthcoder已经提供了有关解决方法的详细信息的答案\\?\C:
,但是现在有一个注册表项HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
,可用于删除单个系统的MAX_PATH限制。本文还提到了在需要时Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths
在组织或整个组范围内对组策略控制的支持。