【问题标题】:Powershell: 'The fully qualified file name must be less than 260 characters'Powershell:'完全限定的文件名必须少于 260 个字符'
【发布时间】:2012-04-30 18:13:07
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: powershell xcopy file-copying copy-item max-path


    【解决方案1】:

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

    robocopy h:\ g:\ /E
    

    如果您不太反对原生命令而不是纯 PowerShell 解决方案。

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

    【讨论】:

    【解决方案2】:

    在 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找到。

    【讨论】:

      猜你喜欢
      • 2011-02-01
      • 2012-07-11
      • 1970-01-01
      • 2016-02-03
      • 2014-05-11
      • 2014-09-23
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多