【问题标题】:Compare different versions of the same directory (by date modified)比较同一目录的不同版本(按修改日期)
【发布时间】:2019-03-20 00:37:42
【问题描述】:

这是一个多部分的问题。一旦我得到一个工作原型,我就可以填写详细信息。

情况:由于喜剧错误,我有一个非常大的目录的三个副本,每个副本都有一些唯一的新文件/文件版本。我想结合这些,保持每个文件的最新版本。

我不知道的事情的细分:如何递归地比较目录(可能一次做两个;1 vs 2 = 1+2,然后 1+2 vs 3 = 1+2 +3)。对此至关重要的一步,如何使用目录1中文件的路径/文件名首先查看是否可以在目录2中找到它,然后如果找到,则使用修改日期确定是否从1或2复制到新的组合目录。

我认为通过这 3 条信息(递归比较文件 b/t 两个目录,按路径和按修改日期),我可以拼凑出如何编写脚本。虽然我可以单独查看这些位,但要说服自己这个过程是正确完成的,我想在实际的评估/移动步骤上得到一点帮助,这样我就不用担心我忽略了一些小而重要的细节。

当我完成脚本后,将发布脚本,并附上关于我对它的信心的任何警告。

【问题讨论】:

  • 需要编写代码以递归方式比较两个目录中的每个文件。您可能会发现scootersoftware.com 中的Beyond Compare 很有用。他们提供免费试用版,您可能应该尝试一下。 (如果您购买 Beyond Compare,我不会受益。)

标签: powershell scripting directory


【解决方案1】:

robocopy 是为文件复制而构建的并且有足够的选项来覆盖几乎任何情况时,不要浪费时间编写脚本......

默认情况下,如果源和目标具有不同的时间戳或不同的文件大小,它只会复制文件。

使用/XO 将排除不同的旧文件,因此您最终只会在目标中获得最新文件。

/E 包含子文件夹,包括空文件夹,更改为 /S 以不包含空文件夹。

robocopy C:\source1 C:\destination /E /XO
robocopy C:\source2 C:\destination /E /XO
[etc]

【讨论】:

  • 在做这件事之前我问的另一个原因:) 谢谢,会检查一下!
  • 顺便说一句,我赞成您的回答并对其进行标记。刚注册了我的账户,所以它没有显示出来。再次感谢您
猜你喜欢
  • 1970-01-01
  • 2012-12-31
  • 2012-03-30
  • 2021-12-18
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
相关资源
最近更新 更多