我正在尝试在Win7中创建一个批处理文件,该文件将复制今天已创建或修改的所有文件,并将它们复制到具有类似目录结构的目标位置。这是我到目前为止的内容:
set today="20180721"
robocopy "C:\temp\" "D:\backup\temp\" *.* /s /DCOPY:T /MINAGE:%today%
我知道/ e复制空目录,/ xf排除所有文件,但是我不确定这是否对我有帮助。上面的代码似乎可以复制所有文件,而不考虑日期,所以我在这里有点迷失了。
答案 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)"