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

Loo*_*oom 4 powershell xcopy copy-item max-path file-copying

我试图用PowerShell命令copy-item作为xcopy一个磁盘的内容复制到另一个.

copy-item -Path h:\* -Destination g:\ -Recurse -Force
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了以下错误:

Copy-Item:指定的路径,文件名或两者都太长.完全限定的文件名必须少于260个字符,目录名必须少于248个字符.

我得到这些错误足以阻止手动搜索和复制具有长路径的文件或文件夹.避免这个问题的最佳方法是什么?

Joe*_*oey 6

据我所知robocopy自动处理(至少你必须明确禁用对长路径的支持).所以你可以使用

robocopy h:\ g:\ /E
Run Code Online (Sandbox Code Playgroud)

如果你对本机命令不是太不利,而不是纯粹的PowerShell解决方案.

通常,您可以\\?\在路径前添加允许处理最多32k字符的路径,但很可能这对.NET可能没有帮助.


jon*_*n Z 5

在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)
Run Code Online (Sandbox Code Playgroud)

其他样品可以在这里找到.