Robocopy:如何复制目标中不存在的文件,但将它们复制到目标以外的目录中?

Robocopy:如何复制目标中不存在的文件,但将它们复制到目标以外的目录中?

假设我的目标目录已经包含一些文件。我的源目录包含相同的文件以及一些目标目录中没有的额外文件,我想复制这些额外的文件。我知道我可以:

robocopy c:\source_path c:\destination_path /e /xc /xn /xo

但是,我想将这些文件复制到与目标不同的目录中。换句话说,我想将这些不在目标中的文件与目标中已有的文件分开。

我该怎么做?如果重要的话,我正在使用 Windows 10。

编辑 2020/4/2:

harrymc 的回答不太有效。

powershell "Get-ChildItem -Path 'c:\source_path` -exclude (Get-ChildItem -Path `c:\exclusion_path`) | Copy-Item -Destination 'c:\destination_path'"

这只会复制 \source_path 下的文件并忽略所有子目录(我的错 - 我没有提到任何有关子目录的内容)。

当我包含选项 -Recurse 时,如下所示:

powershell "Get-ChildItem -Path 'c:\source_path` -exclude (Get-ChildItem -Path `c:\exclusion_path`) -Recurse | Copy-Item -Destination 'c:\destination_path'"

它将 \destination_path 下的所有子目录(所有级别)作为空文件夹放置,并将所有文件(所有子目录中)直接放置在 \destination_path 下,如果 \source_path 中单独的目录中有多个同名文件,则覆盖所有文件。另外,\exclusion_path 中没有排除任何文件或目录(\source_path 和 \exclusion_path 具有相同的目录结构)。我不明白这应该如何工作。

答案1

Robocopy 不是适合这项工作的工具。PowerShell 更好,只需一行代码即可完成。

假设从 复制c:\source_pathc:\destination_path但排除 中的所有内容c:\exclusion_path

Get-ChildItem -Path 'c:\source_path` -exclude (Get-ChildItem -Path `c:\exclusion_path`) | Copy-Item -Destination 'c:\destination_path'

为了使其从 CMD 工作,请像这样编写:

powershell "Get-ChildItem -Path 'c:\source_path` -exclude (Get-ChildItem -Path `c:\exclusion_path`) | Copy-Item -Destination 'c:\destination_path'"

相关内容