Powershell: '完全限定的文件名必须少于260个字符'

4

我尝试使用powershell命令copy-itemxcopy一样将一个磁盘的内容复制到另一个磁盘。

copy-item -Path h:\* -Destination g:\ -Recurse -Force

然而,我遇到了以下错误:

复制项目(Copy-Item):指定路径、文件名或两者都太长。完全限定的文件名必须小于260个字符,目录名必须小于248个字符。

我遇到这些错误已经足够让我放弃手动搜索和复制具有较长路径的文件或文件夹。如何避免这个问题是最好的方法?

2个回答

7
据我所知,robocopy 可以自动处理这个问题(至少你需要明确禁用长路径支持)。因此,你可以使用它。
robocopy h:\ g:\ /E

如果你不反对使用本地命令而不是纯PowerShell解决方案。

通常你可以在路径前加上\\?\,以处理长达32k个字符的路径,但这可能对.NET无效。


BCL团队之前有一系列关于长文件路径支持的文章,其中讨论了“\?\”选项:.NET中的长路径,第1部分 - Emperor XLII

5
在Codeplex上,微软提供了一个实验性长路径包装器,它提供了使超过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)

其他示例可以在这里找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接