如何防止Robocopy处理一个空的顶级目录?

时间:2013-03-25 11:20:00

标签: batch-file robocopy

有没有办法利用Robocopy,如果针对空的顶级目录调用它,它不会复制它?

我使用Robocopy来识别然后在脚本中压缩的文件和目录 - 使用标准的Windows归档功能无法压缩空目录。

我知道/ s开关可以防止复制空子目录。

2 个答案:

答案 0 :(得分:5)

如果您在没有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隐藏输出和错误,因为不是空的文件夹将显示错误消息,可以忽略。

答案 1 :(得分:1)

Robocopy / S只能做到这一点,我注意到当你运行命令时,如果在它完成之前查看目标文件夹,你可能会看到一些空文件夹,但是一旦完成这个过程就会消失