I would like to copy files from one drive to another, but I only want to copy source files that are newer than the destination file. BUT, I also want to only copy source files that have been changed after a certain date.

I know I can use xcopy to do either one of these things, but I would like to do both at the same time.

So for example, I want to copy all source files dated on or after 3/1/2013, but in addition I only want the file copied if the source file is newer than the destination. So ideally I would like to do something like this:

xcopy c:\*.* e:\*.* /D:03-01-2013

combined with something like this:

xcopy c:\*.* e:\*.* /D

Can this be done with xcopy or Robocopy?


This will probably get you what you want:

Robocopy c:\ e:\ *.* /MAXAGE:20130301 /XO /E

Add the /L command to this to see what it will do without it actually doing it first just to make sure.

Check here for more information on Robocopy's options.


Just use both options in the same command:

xcopy c:\*.* e:\*.* /D /D:03-01-2013

gets you what you want.

  • How would you do it if you wanted the file to be at least 1 hour old? In other words, a relative age from now, not an absolute age?
    – toddmo
    Jul 2 '14 at 19:30
  • 1
    @toddmo It looks like both xcopy and Robocopy can only filter by date, not time. You would have to use some other utility, or something like a FOR loop with the DIR /O:D command.
    – Malcolm
    Jul 3 '14 at 21:35
  • 1
    RoboCopy can use minage and maxage, but it is only on the day level, not hour. You can also read here for some other tools and batch scripts that will copy files 1 hour old.
    – Sun
    Nov 5 '14 at 19:58

In case someone wants to do the same without command line, the SyncToy tool does the job pretty well.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.