Robocopy 为您提供了两种指定日期的选项(用于 maxage、minage、maxlad、minlad)——相对日期(n<1900)或固定日期(否则,视为 yyyymmdd)。完整的语法在这里。
您想包含在给定日期创建或访问的文件,因此您必须使用最小/最大 lad(最后访问日期)和固定日期,所以让我们使用 robocopy 语法指定您的标准:
1. 排除自昨天以来未使用的文件:使用 /maxlad ( today_date - 1 天)
2. 排除今天使用的文件:使用 /minlad (today_date)
将它们放在一起:
robocopy source_dir destination_dir file_spec /maxlad:%today_minus_1% /minlad:%today%
today
并且today_minus_1
vars 必须是 yyyymmdd 格式的日期(例如 20120710) - 如何获取它们?好吧,如果您仅限于纯批处理,则必须找到脚本来为您计算,有一些可用的(例如,here) 或自己编写。
如果您可以使用 powershell,那非常简单:
for /f %y in ('powershell get-date ^(get-date^).adddays^(-1^) -uformat %Y%m%d') do set today_minus_1=%y
让您获得第一个变量和
for /f %t in ('powershell get-date -uformat %Y%m%d') do set today=%t
第二个变量。
总结一下:设置您的日期变量,然后运行 robocopy(在排除项中使用它们)。检查它是否正常工作时值得使用/L
选项,因为实际副本将重新设置文件的访问时间戳!
给出的所有变量和命令就好像直接从 cmd 行执行一样。如果批量使用,您将需要添加一些%
(使用 setlocal 可能是明智的)
注意:我使用的版本(XP010)不允许像您的示例中那样使用负数或空格