如何在一个批处理文件中执行从一个源文件夹到两个目标文件夹的两个 ROBOCOPY 语句?

How to perform two ROBOCOPY statements from one source folder to two destination folders in one batch file?

我有一个有趣的情况,我想将一些文件从目录 X 移动到目录 Y,但是为了在不删除源文件夹的情况下移动文件,我在所述文件夹中创建了一个日志语句。我正在做的一个非常简单的版本是:

robocopy 
    "C:\Desktop\Origin" "C:\Desktop\Destination" 
    /e /move /XF "C:\Desktop\Origin\test.log" 
    /log:"C:\Desktop\Origin\test.log"

这会导致将“源”目录中的所有文件移动到“目标”目录,并且不会像“/e /move”标志通常那样删除“源”目录。现在,如果我不想要那个日志文件,我可以简单地将这一行添加到代码中:

del "C:\Desktop\Origin\test.log"

但是,我真的很想保留这个日志文件。我只是想把它放在别的地方。所以我一直试图做的是用“/e /mov”或什至只是“/s”将它移动到目录 Z,然后删除。例如:

robocopy 
    "C:\Desktop\Origin" "C:\Desktop\Destination" 
    /e /move /XF "C:\Desktop\Origin\test.log" 
    /log:"C:\Desktop\Origin\test.log"
robocopy
    "C:\Desktop\Origin" "C:\Desktop\Destination 2" 
    /s
    del "C:\Desktop\Origin\test.log"

但在尝试了多次之后,经过多次小的改动,似乎什么也没有发生。第一个 robocopy 发生了,但第二个似乎根本没有发生。似乎多个 robocopy 语句可以 运行 在一个批处理文件中(这是我想要的)但可能不是来自同一个源目录。有谁知道为什么会这样以及我如何实现既定目标?谢谢!

感谢Ken White的建议,我找到了解决办法。如果您使用 MOVE.EXE,它会按预期工作。

robocopy 
    "C:\Desktop\Origin" "C:\Desktop\Destination" 
    /e /move /XF "C:\Desktop\Origin\test.log" 
    /log:"C:\Desktop\Origin\test.log"
move
    "C:\Desktop\Origin\test.log" "C:\Desktop\Destination 2"

需要注意的一件事是您不能使用 /LOG+: 方法,因为您会将日志文件写入一个不存在日志文件的位置,因为它之前已被移动到“Destination” 2”。但是,即使是普通的日志文件也包含目录中已有的 *EXTRA 文件。