Thursday, June 19, 2008

Copy all files from a root dir to another directory

I had the need to copy all files of type .m4a from literally hundreds of subdirectories to a single directory. I tried and failed with XCopy so decided to roll my own utility.

So 10 minutes and some C# hackery later, SubCopyX was born. Feel free to hack and slash the code to your hearts content. If you do use it in anger or have suggestions, then let me know at : james at softwarex dot co dot nz

.NET 2.0 required to run.

Source here
Binary here

Usage:

from the commandline type:
SubCopyX
for example:
SubCopyX c:\Music d:\Music *.mp3

to copy all your mp3 files under the root dir c:\Music to a single directory called d:\Music

The following wildcard specifiers are permitted in searchPattern.

Wildcard character

* Zero or more characters.

? Exactly zero or one character.

Characters other than the wildcard specifiers represent themselves. For example, the searchPattern string "*t" searches for all names in path ending with the letter "t". The searchPattern string "s*" searches for all names in path beginning with the letter "s".

Note:

When using the asterisk wildcard character in a searchPattern, such as "*.txt", the matching behavior when the extension is exactly three characters long is different than when the extension is more or less than three characters long. A searchPattern with a file extension of exactly three characters returns files having an extension of three or more characters, where the first three characters match the file extension specified in the searchPattern. A searchPattern with a file extension of one, two, or more than three characters returns only files having extensions of exactly that length that match the file extension specified in the searchPattern. When using the question mark wildcard character, this method returns only files that match the specified file extension. For example, given two files, "file1.txt" and "file1.txtother", in a directory, a search pattern of "file?.txt" returns just the first file, while a search pattern of "file*.txt" returns both files.

The following list shows the behavior of different lengths for the searchPattern parameter:

* "*.abc" returns files having an extension of .abc, .abcd, .abcde, .abcdef, and so on.
* "*.abcd" returns only files having an extension of .abcd.
* "*.abcde" returns only files having an extension of .abcde.
* "*.abcdef" returns only files having an extension of .abcdef.

4 comments:

Duncan Smart said...

Familiarise yourself with the FOR batch command :-)

REM subcopy.cmd
@echo off
echo Recursively copying %3 files from %1 to %2
pushd %1
for /r %%F in (%3) do echo %%F & copy "%%F" "%2" > nul
popd

KiwiBastard said...

Easier for me to quickly knock together a utility app, than learn scripting foo - but you make a good point

Mark Hibbert said...

Just wanted to say thanks. Very useful for organising music files for the PS3 (where they have to all be in one directory on the hard drive).

Anonymous said...

Free Casino Bonus tyuueooru
Casino Free Game

Also, check out whether or not their customer service is available 24/7.
[url=http://www.nhgaa.org/]Free Casino[/url]
This is why online casino seems to be a common interest of many nowadays.
http://www.nhgaa.org/ - Online Casinos Free
It's always good to stick to such online casino website that can meet your queries whenever you want.