Using xcopy to copy files from several directories

2020-02-08 04:06发布

Is it possible to use xcopy to copy files from several directories into one directory using only one xcopy command?

Assuming that I have the directory tree

root\Source\Sub1\Sub2

I want to copy all .xml files from the directory root\Source including sub folder to root\Destination. I don't want to copy the folder structure, just the files.

3条回答
唯我独甜
2楼-- · 2020-02-08 04:40

The Answer to this problem which I think is "How to gather all your files out of all the little subdirectories into one single directory" is to download a piece of software called XXCOPY. This is freely available via XXCOPY.COM and there's a free non-commercial version fortunately. One of the Frequently Asked Questions on the help facility on XXCOPY.COM is effectively "How do I gather all my files into one directory" and it tells you which switch to use. XXCOPY is though a surefire way of doing this and it comes in a .zip archive so unzipping it can be not that straightforward but it's not particularly difficult either. There is an unzipping program called ZipGenius available through the ZipGenius.it website so maybe before you download XXCOPY then download ZipGenius then it's a smallpart smalltime double wammy(!)

查看更多
够拽才男人
3楼-- · 2020-02-08 04:41

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.

查看更多
We Are One
4楼-- · 2020-02-08 04:54

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
查看更多
登录 后发表回答