在我之前的问题中如下:
“如何创建长度超过260个字符的文件的副本。”
我问了几乎相同的qustion,我得到了一个重命名目录名的解决方案,然后复制到一个新位置。但根据客户的要求,我们无论如何都无法重命名目录。
所以现在我的问题是当我们尝试复制路径长度(包括文件名)超过 260个字符的文件(比如267个字符)时,它允许我们手动复制但是抛出一个vista OS中的异常程序。
如果有人有解决方案,请告诉我。
答案 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中路径长度的限制。
如果没有,这意味着“按程序复制”将通过: