【问题标题】:Robocopy - Compare modified dates of files?Robocopy - 比较文件的修改日期?
【发布时间】:2010-05-20 08:00:57
【问题描述】:

我一直在尝试创建这个脚本,它基本上反映了两组文件夹及其内容(包括子文件夹),但只复制比现有文件更新的文件。我尝试通过编写一个 vbscript 来做到这一点,但事实证明我需要手动扫描每个子文件夹,然后是它的内容。然后是那个子文件夹的内容等等。

所以我想知道是否有人知道这是否可以使用 Robocopy 完成?

【问题讨论】:

  • 我只是把它扔进去以获得更多信息,但有点关于主题。我最近不得不通过 ftp 执行此操作,并且该程序可以快速完成它 scriptftp.com 。有时最好不要重新发明轮子。反正我不隶属于,我知道你说的是本地路径,但我想你以后可能需要去服务器到服务器。

标签: vbscript last-modified robocopy


【解决方案1】:

ROBOCOPY %SOURCE_DIR% %TARGET_DIR% * /MIR

更正

ROBOCOPY %SOURCE_DIR% %TARGET_DIR% * /MIR /XO

【讨论】:

  • -1 OP 明确表示“但只复制比已经存在的文件更新的文件”。 /MIR 不这样做 - 它将源镜像到目标中,即使是更新的目标文件也会覆盖目标文件。如果 OP 运行它,它将丢弃任何较新的目标文件。
  • @Rob Levine 我忘记了 /XO。感谢您的评论,但在您投反对票之前有一点时间来纠正我的答案会很好。
  • @Rob Levine 谢谢,我很感激。
  • 这有点工作。但是你看,它的设置是这样的: 如果用户是 group1 的成员,复制 \\server\folder 到 c:\dest\ 如果用户是 group2 的成员,复制 \\server\folder2 到 c:\dest\ 猜猜会发生什么当用户是两者的成员时? :) 这是我的问题。
  • 好的,所以我只是尝试删除 /MIR 开关。这导致了我想要的行为。如果用户是这两个组的成员,他将获得这两个内容。但是,如果我从源路径中删除文件或文件夹然后运行脚本,它自然不会从本地路径中删除它。那么,也许我需要将它与一个单独的 vbscript 函数结合起来,该函数基本上比较文件和文件夹并相应地删除?
【解决方案2】:

简而言之 - 是的 - 使用 RoboCopy 非常简单。默认情况下,它只复制更改的文件,并且不会复制未更改的文件。您只需添加一个参数即可使其排除目标存在且较新的文件。

RoboCopy 的语法有点古怪,所以您可能想阅读更多来自 here 的内容。

你可能想要这样的东西:

RoboCopy.exe %sourceDir% %targetDir%\ *.* /xo

%sourceDir% - 你的源目录

%targetDir% - 你的目标目录

*.* - 要复制的源目录中的文件

/xo - 如果目标已存在且较新,则排除文件。

[根据评论进行编辑]

如果您说要从目标目录中删除源目录中不再存在的文件,那么我相信开关 /purge 会这样做。

【讨论】:

  • 嗨,这确实有效 :) 但是,如果源文件夹中有我刚刚删除的文件和文件夹,因为我不再需要它们?我刚刚尝试过,该文件或文件夹仍在目标文件夹中。我认为我应该使用某种镜像功能。只是没有在此过程中消灭整个目的地。不过,我也可以编写一个 vbscript 来执行此操作。只需检查文件和文件夹以查看内容是否匹配。然后使用 robocopy 复制较新的文件。
  • 如果源中不再存在文件,您是说要从目标中删除文件吗?
  • 你要么需要添加 /E 覆盖子目录,要么使用 /MIR 相当于 /E /PURGE
  • i 还将包括 /FFT - 特别是如果您在 Windows 和 linux 文件系统之间复制文件。否则它将无法获得正确的文件日期,并会一遍又一遍地复制所有内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 2019-09-27
  • 2013-01-26
相关资源
最近更新 更多