如何防止Robocopy复制空的顶层目录?

6
有没有办法利用Robocopy使其在针对空的顶级目录时不进行复制?
我正在使用Robocopy来识别文件和目录,然后在脚本中对其进行压缩 - 使用标准的 Windows 压缩功能无法压缩空目录。
我知道 /s 开关可以防止复制空子目录。

2
“top level directory”是什么意思?你能举个例子吗? - Endoro
2个回答

7
如果您使用robocopy /s命令而没有使用/e开关,那么它将不会复制任何空文件夹。看起来你正在使用robocopy /s /e,因为你遇到了空的顶层文件夹的问题。如果您不想要任何空的子文件夹,那么只需省略/e开关,目标位置就不会创建任何空文件夹。如果您需要复制空的子文件夹,则无法避免同时复制空的顶层文件夹。但是,您可以轻松地像这样删除空的顶层文件夹:
robocopy C:\Source\Dir X:\Dest\Dir /s /e
cd /d X:\Dest\Dir
for /d %%i in (*.*) do rd "%%i" > nul 2>&1

cd 命令更改到目标驱动器和文件夹,然后 for 命令尝试删除所有顶级文件夹。只有空文件夹才会被删除。 > nul 2>&1 隐藏了输出和错误信息,因为非空文件夹将显示错误消息,可以忽略不计。


在执行命令之前,我使用了 /l 选项来显示将要被复制的内容,看起来所有的目录都会被创建,而不管它们的年龄。但实际情况并非如此,这只是正在处理的内容的指示。当真正执行命令时(即没有 /l),输出结果类似。请放心,只有预期的文件和目录会被复制。 - darrenp

1

只需要使用Robocopy /S命令即可解决问题。我注意到,当你运行该命令时,如果在完成之前查看目标文件夹,你可能会看到一些空文件夹,但是一旦进程完成,这些文件夹就会消失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接