Using xcopy to copy files from several directories to one directory

You don't need xcopy for that. You can get a listing of all the files you want and perform the copy that way.

For example in windows xp command prompt:

for /f "delims==" %k in ('dir c:\source\*.xml /s /b') do copy "%k" x:\destination\

The /s goes into all subdirectories and the /b lists only the files name and path. Each file inturn is assigned to the %k variable, then the copy command copies the file to the destination. The only trick is making sure the destination is not part of the source.


As DandDI said, you don't need xcopy. for statement helps much. However, you don't need to state process outcome of dir command as well, this command helps better

for /R c:\source %f in (*.xml) do copy "%f" x:\destination\

By the way, when you use it from a batch file, you need to add spare % in front of variable %f hence your command line should be;

for /R c:\source %%f in (*.xml) do copy %%f x:\destination\

when you use it within a batch

  • Should surround %f with double quotes otherwise it will fail copying file names with spaces