我尝试使用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无效。
[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)
其他示例可以在这里找到。