使用robocopy复制今天创建或修改的文件

时间:2018-07-21 18:40:53

标签: batch-file windows-7 copy robocopy

我正在尝试在Win7中创建一个批处理文件,该文件将复制今天已创建或修改的所有文件,并将它们复制到具有类似目录结构的目标位置。这是我到目前为止的内容:

set today="20180721"
robocopy "C:\temp\" "D:\backup\temp\" *.* /s /DCOPY:T /MINAGE:%today%

我知道/ e复制空目录,/ xf排除所有文件,但是我不确定这是否对我有帮助。上面的代码似乎可以复制所有文件,而不考虑日期,所以我在这里有点迷失了。

2 个答案:

答案 0 :(得分:2)

为变量分配引号不是最佳实践,如果以后尝试对变量加引号,则会在某些命令中引起问题。不管那不是你的问题。您的问题是您需要使用/MAXAGE选项。阅读帮助文件,您应该会看到以下内容:

/MAXAGE:n : MAXimum file AGE - exclude files older than n days/date.`

因此您的代码应为:

set "today=20180721"
robocopy "C:\temp\" "D:\backup\temp\" *.* /s /DCOPY:T /MAXAGE:%today%

假设您认为这些选项适用于INCLUDE。

答案 1 :(得分:1)

robocopy/MINAGE / /MAXAGE选项会考虑完整的日期和时间,因此请为过去24小时内已修改的文件指定类似/MAXAGE:1的过滤器

如果您只想处理今天修改的文件,因此只考虑日期而不是时间,则可以使用forfiles及其'/ D'选项,如下所示:

set "DEST=D:\backup\temp"
forfiles /P "C:\temp" /D +0 /C "cmd /C if @isdir==FALSE for %%Z in (@relpath) do @(2> nul md 0x22%DEST%\%%~Z\..0x22 & copy @relpath 0x22%DEST%\%%~Z0x22)"