当“文件名太长”时删除 robocopy 创建的递归目录

当“文件名太长”时删除 robocopy 创建的递归目录

运行 robocopy.exe 备份 C:\Users\ 文件夹后,不使用开关/xj,我得到了一个太长的递归目录。例如,如果您运行,dir /b /s您将收到以下错误:

目录名 C:\Users\ ... \AppData\Local\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data 太长。

我尝试删除它,rmdir "Application Data" /s但收到错误“文件名太长”

我研究过其他解决方案,但我认为我可以使用造成问题解决它。

答案1

使用 创建一个空目录mkdir empty,然后使用robocopy empty\ "Application Data\" /mir"删除整个目录树。然后发出rmdir emptyrmdir "Application Data进行清理,就大功告成了。

答案2

您可能能够cd深入目录以删除下面的内容,然后cd再返回顶部并删除剩余的内容。

如果这不起作用并且你仍然卡住,请下载免费演示版本我的 Hamilton C shell(完全披露:我是作者)并使用rm-r使用(递归)和-x(删除任何内容)选项附带的实用程序。

rm -rx directoryname

rm使用新的长 Unicode 文件名内部格式化,允许它操作最多 32K 个字符的路径,这样就应该可以了。

如果您发现问题还涉及权限,则可能需要使用sudosu提升,例如,

sudo rm -rx directoryname

在非常棘手的情况下,您可能会被阻止访问的 ACL 所困扰,例如cacls报告Everyone:(DENY)。在这种情况下,您可能需要删除该 ACE(访问控制条目)。

cacls directoryname /e /r everyone

最后,我真的希望这能有所帮助。我的服务器日志告诉我,人们正在下载我的软件来尝试这个,我希望它能起作用。如果你遇到没有成功的情况,我希望你能联系我,这样我就可以调试原因并让它正常工作。无法删除的东西经常发生,我希望涵盖所有情况。

答案3

您还可以尝试以下方法之一;

解决方案 1:使用自动生成的 8.3 名称访问文件

解决方案 2:重命名或移动深层文件夹

解决方案 3:将驱动器映射到路径结构中的文件夹 将驱动器映射到目标文件或文件夹路径结构中的文件夹。此方法缩短了虚拟路径。

解决方案 4:使用与文件夹一样深的网络共享如果解决方案 1、2 和 3 不方便或不能解决问题,请创建在文件夹树中尽可能深的网络共享,然后通过访问共享来重命名文件夹。

解决方案 5:使用可以遍历深度路径的工具

http://support.microsoft.com/kb/320081

相关内容