如何将文件复制到vista中路径长度超过260个字符的新位置?

时间:2009-01-29 11:41:56

标签: vb.net

在我之前的问题中如下:

如何创建长度超过260个字符的文件的副本。”

我问了几乎相同的qustion,我得到了一个重命名目录名的解决方案,然后复制到一个新位置。但根据客户的要求,我们无论如何都无法重命名目录。

所以现在我的问题是当我们尝试复制路径长度(包括文件名)超过 260个字符的文件(比如267个字符)时,它允许我们手动复制但是抛出一个vista OS中的异常程序。

如果有人有解决方案,请告诉我。

3 个答案:

答案 0 :(得分:3)

在您的路径中添加 \\?\ ,以启用最长32767个字符的路径长度。 E.g:

copy \\?\C:\big\dir\hierarchy\myfile.txt \\?\C:\tohere.txt

This page有更多详情。

我只在WinXP中使用DIR对此进行了测试,但这似乎有效。

答案 1 :(得分:1)

如果问题只是文件的长度(不是前面的路径),那么你可以使用文件的短名称版本(probabaly Outloo~1.xls)。

然而,唯一真正可行的解决方案是使用网络重定向或SUBST命令来缩短路径。我可以想象你必须跟踪程序中的路径长度,并在超出长度时生成SUBST驱动器盘符...在不再需要时删除驱动器盘符。丑陋的编程,但没有希望。

或者

我知道一些unicode版本的windows api函数(copyfileex ..?http://msdn.microsoft.com/en-us/library/aa363852(VS.85).aspx)可以处理32,767个字符。

尝试使用\\?\前缀命名,例如\\?\ D:\。我不确定CLR是否使用这种命名方式,但你可以尝试一下。

答案 2 :(得分:0)

您可以检查compression tools like 7zip是否受Vista中路径长度的限制。

如果没有,这意味着“按程序复制”将通过:

  • 压缩您要复制的目录/文件树
  • 将.zip / .rar复制到目的地
  • 解压