【问题标题】:How do I copy files from the source with different dates than the destination using the Command Line如何使用命令行从源复制与目标不同日期的文件
【发布时间】:2019-01-09 02:32:13
【问题描述】:

所以我无法在 Robocopy 或 xCopy 中找到允许我将文件从源复制到目标的开关,前提是文件的日期不同。无论该文件比目标文件新还是旧。

情况 1:它应该跳过目标中与源中日期匹配的所有文件。但是,如果目标中的文件比源中的旧文件,它将复制该文件。

情况 2:此外,如果目标中的文件比源中的文件新,它也会复制该文件。

我看到有一个开关可以做前一种,但我没有看到第二种情况。

很遗憾,xCopy /d 开关在这种情况下也不起作用。有人对我如何做到这一点有任何想法吗?

我希望答案是批处理编程,但如果它是在 Powershell、vb.NET 或 C# 中,那也没关系。欢迎任何建议。

谢谢!

标记

【问题讨论】:

  • FileInfo dotnet 类有一个 LastWriteTime 属性,这是一个您可以比较的 DateTime 类型(这是从 Get-ChildItem/Get-Item 返回的内容)
  • 所以基本上你想跳过日期相同但大小/内容不同的文件,对吧?那么robocopy /XC呢?
  • 日期真的很重要吗?还是您只想将任何不同的文件从源复制到目标?如果您想复制任何不同的文件,那么我会获取每个文件的哈希值,如果它们不同则复制。
  • 我同意@aschipfl。 Robocopy 已经不会复制它认为不需要复制的文件(相同的名称、相同的大小、相同的长度)。 robocopy /XC 将排除具有相同时间戳但大小不同的文件。我不知道你为什么要在 robocopy 默认使用相同的时间戳更新更改的文件时这样做,但它可以做到。 This answer 有一个很好的表格和对 robocopy 行为的解释。
  • 不错。谢谢你们。我将尝试 robocopy XC 看看是否可行。我会告诉你!即使源文件较旧,我也希望它从源重新复制文件的原因是因为这些文件驻留在员工的计算机上。如果他们对文件进行更改,则会更新时间戳。如果他们在我更新源文件后这样做,那么文件将不会下载到他们的计算机上,他们将错过更新。希望这是有道理的。再次感谢。

标签: windows powershell batch-file robocopy xcopy


【解决方案1】:

折腾了半天,我终于想通了昨天一直在寻找的答案。这是……

ROBOCOPY /XX /MIR YourSourceFolder YourDestinationFolder

它是 /XX 和 /MIR 开关与 RoboCopy 的组合。

/XX 开关将不允许 RoboCopy 接触文件夹中已存在的任何额外文件。

然后,/MIR 开关会将镜像副本从 SourceFolder 带到 DestinationFolder。两个文件夹中的日期和时间将匹配。太棒了!

我之前的错误是我试图只找到一个可以为我执行此操作的开关,而不是组合可用的开关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多