4

I know that the copy command has an option to automatically replace a file if it already exists, but I want to know if it is a way to copy the files only if they not already exist (/Y). I do not know the actual file names in the batch code, as I copy from the source using wildcards in the copy command:

copy *.zip c:\destination

The reason I want this instead of automatic overwrite is that the files are large, and to skip existing would save a lot of execution time. It is done over a network share, so copying this amount of data can take a while...

Additional info:
This is a batch job that runs a backup thing to copy zip files from my computer to a shared server, and in case the batch job didn't finish for some reason (only some of the zip files copied), I need to run the batch again, but only for those zip files that wasn't copied before.

0

4 Answers 4

4

This command solved this for me:

XCOPY *.ZIP /D C:\DESTINATION
2
  • 1
    Can you explain it? It's using /D for date: "/D:m-d-y Copies files changed on or after the specified date. If no date is given, copies only those files whose source time is newer than the destination time." But this does not work if the sources hasn't changed.
    – Xonatron
    Sep 18, 2013 at 15:45
  • 1
    I would accept this answer. if the source file has not changed, it won't copy it. serves your purpose after all, if the file has changed, you would want to copy the newer version wouldn't you? @awe Mar 17, 2015 at 20:28
3
echo n|xcopy "[source]" "[destinaton]" 

Check out the various arguments for xcopy to tailor for your particular use

6
  • 1
    I found no option to skip if copied files already exist on destination.
    – awe
    Jan 17, 2011 at 11:34
  • 1
    I actually used robocopy instead, as the help for xcopy stated that xcopy is depreciated, use robocopy instead. The option I use to ` copy only files with the Archive attribute and reset it.` exist on both (/M).
    – awe
    Jan 17, 2011 at 11:58
  • How does setting setting Archive attribute and reseting it would help ? Jan 17, 2011 at 12:04
  • 1
    I resorted to a hardware solution to this issue i.imgur.com/c1kVF7r.jpg
    – deed02392
    Jul 31, 2013 at 16:26
  • @deed02392: Although I like your solution, in my case the batch job will be started as a scheduled task, and it would be tricky to get the physical setup to happen automatically at a scheduled time. It would have to be a robot doing it perhaps.
    – awe
    Oct 2, 2013 at 7:55
0

Robocopy - auto skip files already in the destination

ROBOCOPY \some\folder c:\destination *.zip /S

2
  • 3
    The Robocopy documentation says that /s is for copying subdirectories, not auto-skip...
    – bdukes
    Aug 25, 2012 at 1:45
  • What @bdukes said is true: "/S :: copy Subdirectories, but not empty ones" and "/E :: copy subdirectories, including Empty ones"
    – Xonatron
    Sep 18, 2013 at 15:44
0

The problem is solved by using robocopy and use the /M option to copy only files with the archive flag set, and then clear it.

robocopy /M *.zip c:\destination

In this article on wikipedia you see that this is actually very similar to what the archive flag is intended for in the first place.

Not the answer you're looking for? Browse other questions tagged .