How can I copy files from A to B, only including files that exist in B?

5,936

Solution 1

When you want to copy, robocopy always has the right switch to do it.
Here you want the /XL switch to exclude “lonely” files:

robocopy C:\ D:\ /S /XL

This will work with files or folders.

Solution 2

Try using XCOPY command:-

Syntax:

xcopy sourceDirectory DestinationDirectory /U /Y

 /U           Copies only files that already exist in destination.
 /Y           Suppresses prompting to confirm you want to overwrite an
              existing destination file.

Example:

xcopy D:\Temp\test\*.* D:\Temp\test11 /U /Y

*.* - indicates all files in this directory

Here it overrides the files in destination folder "D:\Temp\test11" folder with the files from source

Solution 3

Check the Troubleshooting IT Issues blog for solution for Robocopy rooting files like PST

net use n: \\server\backup
echo %computername%
mkdir n:\%computername%
SET SourceDir= n:\%computername%
SET Log="n:\%computername%.log"
robocopy c:\ %SourceDir% *.doc* *.ppt* *.xls* *.pst* *.pdf /s /LOG:%Log%

The addition of * on either side of the office documents is to ensure that you copy all versions from Office-2k3 and above. I have also included the PST files.

Solution 4

A simple for-loop combined with a dir /b should work. Something like this:

FOR /F %X IN ('dir /b D:\Asd') DO copy "C:\Asd\%X" "D:\Asd\%X"

If you're using a batch file, replace %X with %%X (something to do with they way how Windows processes variables, it's different from the command line).

Share:
5,936

Related videos on Youtube

markzzz
Author by

markzzz

Updated on September 18, 2022

Comments

  • markzzz
    markzzz over 1 year

    I'm on Windows 7 Professional, and this is my scenario :

    Folder "Asd" (C:\)              Folder "Asd" (D:\)
    File 1                          File 1 
    File 2                          File 3 
    File 3                          File 4
    File 4
    File 5
    

    I'd like to select the folder on C:\ (without selecting each single file, of course) and copy it over the same folder on D:. Usually, it will copy all files. But what I'm looking for is to copy only files (from C:) that are contained on folder d:.

    So in my case I'd like to replace only File 1, File 3 and File 4. File 2 and File 5 must be ignored.

    Is it possible?

  • RJFalconer
    RJFalconer about 12 years
    @Markzz, no I don't think so. Oldskool, shouldn't that be "FOR /F %X IN ('dir /b D:\Asd')..." ?
  • Oldskool
    Oldskool about 12 years
    @markzzz Ah, didn't realize it had to be a GUI solution. Windows doesn't have that kind of functionality by default, you'd probably have to look for a custom piece of software that does that if command-line is not an option.
  • Oldskool
    Oldskool about 12 years
    @RJFalconer You are right! Updated the answer, thanks.
  • Oldskool
    Oldskool about 12 years
    @markzzz I think that the tool Total Commander does have a directory comparison function that you could use for this.
  • Kevin Fegan
    Kevin Fegan over 11 years
    @Oldskool - I would make a little change: FOR /F %X IN ('dir /b D:\Asd') DO if exist "C:\Asd\%X" copy "C:\Asd\%X" "D:\Asd\%X" to prevent trying to copy files that don't exist on C: but do exist on D: