如何在 Windows 中复制文件路径太长的文件?

如何在 Windows 中复制文件路径太长的文件?

我需要备份网络共享上的一些文件。但是,我需要在刻录磁盘之前将这些文件复制到本地驱动器,因为这些文件可能正在使用中。有些文件无法复制,因为文件路径太长。除了更改文件结构之外,还有其他解决方法吗?

答案1

在 Windows Vista/7 中,最大路径长度为 260。我可以推荐三种解决方案:

  • (如果路径太长)首先将文件夹复制到 Windows 资源管理器的上层,然后将其移动到本地计算机
  • (如果文件名太长)首先尝试使用存档应用程序对其进行 zip/rar/7z 压缩,然后将存档文件复制到本地计算机,然后提取内容。
  • 使用第三方应用程序。

所有这些建议都假设您对网络共享文件夹/计算机具有某种写入权限。如果您无法执行任何这些操作,则可能需要管理员的帮助。

答案2

robocopy /E source destination

强大的文件和文件夹复制功能

Windows 7 及以上版本(包括 Windows 10):
Robocopy XP027 是 Windows 7 及以上版本上的标准命令。


由于 Robocopy 仍在维护,Windows 版本 7 以上可能有其他 Robocopy 版本。
请阅读上面的链接,了解有关
Robocopy 特定版本限制的更多详细信息。

NT 4 / Windows 2000:
Windows Server 2003 资源工具包工具包括 Robocopy XP010,
可以在 NT 4/Windows 2000 上运行。

Windows 95 或 NT 3.5:
Robocopy 不能在 Windows 95 或 NT 3.5 上运行。(Robocopy 是一个 Unicode 应用程序)。

Windows 95 或 NT 3.5 解决方法:
Microsoft Robocopy GUI 会将 Robocopy XP026 安装到 C:\Windows\system32,
此版本可以在较旧的操作系统上运行,
并包含 XP027 (/BYTES) 的一些功能,但错误级别处理完全被破坏。

Robocopy 的“作业”和“监视源”选项提供了一种设置计划任务以使用 Robocopy 命令运行批处理文件的替代方法。

答案3

通过在路径前添加 前缀,您可以访问最长约 32,767¹ 个字符的路径\\?\

\\?\C:\Some\Really\Long\Path

这适用于命令提示符和任何其他使用 Win32 Unicode Api 方法的程序,包括 C# 应用程序和 .Net 框架中编写的任何其他程序。

文档

它确实需要一个支持长路径的文件系统(例如 NTFS),但如果您有长路径问题,那是必然的。

请注意,某些应用程序和许多本机工具(如 Explorer)在这些路径上都会遇到问题所以利用这一点来让自己脱离困境,而不是陷入困境。

您还可以使用变体\\?\UNC\来访问跨网络共享的长路径......

\\?\UNC\server_name\share_name\...

¹ 对于那些感兴趣的人来说,32,767 不是 32,768,因为它是以空字符结尾的字符串,但\\?\可能会扩大,消耗一些字符,所以不要依赖于计数的精确性。

答案4

我使用了一个更简单的软件解决方案:

免费文件同步便携的出色地完成工作。(它没有长文件名限制)

你也可以

  1. 使用免费文件同步从头开始复制文件, 或者

  2. 在我的情况下,我使用 Explorer 复制了文件,它提醒我某些文件由于文件名太长而无法复制。然后我使用 FreeFileSync 同步剩余的(未复制的)文件

好处是:复印速度相当快。

相关内容