【发布时间】:2019-01-09 02:32:13
【问题描述】:
所以我无法在 Robocopy 或 xCopy 中找到允许我将文件从源复制到目标的开关,前提是文件的日期不同。无论该文件比目标文件新还是旧。
情况 1:它应该跳过目标中与源中日期匹配的所有文件。但是,如果目标中的文件比源中的旧文件,它将复制该文件。
情况 2:此外,如果目标中的文件比源中的文件新,它也会复制该文件。
我看到有一个开关可以做前一种,但我没有看到第二种情况。
很遗憾,xCopy /d 开关在这种情况下也不起作用。有人对我如何做到这一点有任何想法吗?
我希望答案是批处理编程,但如果它是在 Powershell、vb.NET 或 C# 中,那也没关系。欢迎任何建议。
谢谢!
标记
【问题讨论】:
-
FileInfodotnet 类有一个LastWriteTime属性,这是一个您可以比较的DateTime类型(这是从Get-ChildItem/Get-Item返回的内容) -
所以基本上你想跳过日期相同但大小/内容不同的文件,对吧?那么
robocopy /XC呢? -
日期真的很重要吗?还是您只想将任何不同的文件从源复制到目标?如果您想复制任何不同的文件,那么我会获取每个文件的哈希值,如果它们不同则复制。
-
我同意@aschipfl。 Robocopy 已经不会复制它认为不需要复制的文件(相同的名称、相同的大小、相同的长度)。
robocopy /XC将排除具有相同时间戳但大小不同的文件。我不知道你为什么要在 robocopy 默认使用相同的时间戳更新更改的文件时这样做,但它可以做到。 This answer 有一个很好的表格和对 robocopy 行为的解释。 -
不错。谢谢你们。我将尝试 robocopy XC 看看是否可行。我会告诉你!即使源文件较旧,我也希望它从源重新复制文件的原因是因为这些文件驻留在员工的计算机上。如果他们对文件进行更改,则会更新时间戳。如果他们在我更新源文件后这样做,那么文件将不会下载到他们的计算机上,他们将错过更新。希望这是有道理的。再次感谢。
标签: windows powershell batch-file robocopy xcopy