我尝试使用 powershell 命令将一个磁盘copy-item
的xcopy
内容复制到另一个磁盘。
copy-item -Path h:\* -Destination g:\ -Recurse -Force
但是,我遇到了以下错误:
Copy-Item :指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,目录名必须少于 248 个字符。
这些错误足以阻止手动搜索和复制具有长路径的文件或文件夹。避免此问题的最佳方法是什么?
我尝试使用 powershell 命令将一个磁盘copy-item
的xcopy
内容复制到另一个磁盘。
copy-item -Path h:\* -Destination g:\ -Recurse -Force
但是,我遇到了以下错误:
Copy-Item :指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,目录名必须少于 248 个字符。
这些错误足以阻止手动搜索和复制具有长路径的文件或文件夹。避免此问题的最佳方法是什么?
据我所知robocopy
,它会自动处理(至少您必须明确禁用对长路径的支持)。所以你可以使用
robocopy h:\ g:\ /E
如果您不太反对原生命令而不是纯 PowerShell 解决方案。
通常,您可以\\?\
在路径前添加允许处理最多 32k 个字符的路径,但这很可能对 .NET 没有帮助。
在 Codeplex 上,Microsoft 托管了一个实验性的长路径包装器,它提供的功能可以更轻松地处理超过 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)
其他样品可以在这里找到。