我尝试使用powershell命令copy-item
作为xcopy
将一个磁盘的内容复制到另一个磁盘。
copy-item -Path h:\* -Destination g:\ -Recurse -Force
但是,我遇到了以下错误:
Copy-Item:指定的路径,文件名或两者都太长。该 完全限定的文件名必须少于260个字符,并且 目录名称必须少于248个字符。
我发现这些错误足以阻止手动搜索和复制具有长路径的文件或文件夹。避免这个问题的最佳方法是什么?
答案 0 :(得分:6)
据我所知robocopy
自动处理(至少你必须明确禁用对长路径的支持)。所以你可以使用
robocopy h:\ g:\ /E
如果您对本机命令不是太不利,而不是纯粹的PowerShell解决方案。
通常,您可以将\\?\
添加到允许处理最多32k字符的路径的路径中,但很可能这对.NET可能没有帮助。
答案 1 :(得分:5)
在Codeplex上,Microsoft托管experimental long path wrapper,它提供的功能可以更轻松地处理长度超过System.IO命名空间当前259字符限制的路径。
如何在Powershell中使用此包装器复制文件的示例:
[reflection.assembly]::loadfile("C:\Users\stackoverflow\Desktop\Microsoft.Experimental.IO.dll")
[microsoft.experimental.io.longpathfile]::Copy((gi .\myversion.txt).fullname, "C:\users\stackoverflow\desktop\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",$true)
可以找到其他样本here。