Create mix CDs from MP3 files

1

How would you write a script (preferably for the Windows commandline) that:

  • Examines thousands of MP3 files stored on a single drive (e.g., G:\)
  • Randomizes the collection
  • Populates a series of directories up to 650MB worth of songs (without exceeding 650MB)
  • Every song is shucked exactly once
  • (Optional) The directory size comes as close as possible to 650MB

The DIR, COPY, and XCOPY commands have no explicit file size switches.

A few Google searches have come up with:

It would be ideal if UNIX-like environments can be avoided.

My question, then: How do you compare file (or directory) sizes using the Windows commandline?

Dave Jarvis

Posted 2010-02-09T17:43:08.800

Reputation: 2 126

4Why do you need it to leverage DOS? – None – 2010-02-09T17:45:48.600

Windows XP Pro is the environment. DOS is not necessary if there is a Windows tool that can do the same task. Also, would this be a better question for serverfault? – Dave Jarvis – 2010-02-09T18:02:59.943

2WinXP Pro does not even have DOS on it – Joe Phillips – 2010-02-09T18:33:53.327

1I guess by saying DOS Dave means Windows command interpreter (cmd). – Helen – 2010-02-09T18:46:33.857

@d03boy: when people say "DOS" these days, they're normally referring to the Windows non-graphical command shell. It's just easier. – Michael Petrotta – 2010-02-09T18:47:30.043

I'm old school. ;-) – Dave Jarvis – 2010-02-09T18:55:35.157

I am told iTunes will do this. – Dave Jarvis – 2010-02-09T19:00:46.443

1I know what he meant but I figured I'd bring that up anyway since this is a learning site and there should be correct information here – Joe Phillips – 2010-02-09T20:23:09.523

Answers

0

iTunes has such a feature.

Dave Jarvis

Posted 2010-02-09T17:43:08.800

Reputation: 2 126

1

You could use JavaScript WSH script. See FileSystemObject.

var WShell = WScript.CreateObject("WScript.Shell");
var fso = WScript.CreateObject("Scripting.FileSystemObject");

VB is evil.

Fozi

Posted 2010-02-09T17:43:08.800

Reputation: 68

How could this be integrated into a working shell script? – Dave Jarvis – 2010-02-09T18:29:12.433

You can use GetFolder and GetFile to iterate through folders and get the file information. The GetFolder page has a great example, and the File object returned by GetFile has a size attribute. after you selected your files you can use the fso.CopyFile method to copy the selected files. – None – 2010-02-09T19:29:46.587

1

What is your definition of a "unix-like environment"? Does a language like Tcl or Python fall into that category? Such programming languages are perfect for tasks like this, with built-in features for scanning directories, getting file sizes, moving files, etc.

Don't hamstring yourself by using a limited language like the windows batch language. Pick a real programming language that has a native port to windows and you're job will likely be much easier.

Bryan Oakley

Posted 2010-02-09T17:43:08.800

Reputation: 131

Was just looking to create a simple script. I could do it in bash in about 30 minutes. The problem is I want to hand off the program to a friend (a one-time project). Python is a great idea. – Dave Jarvis – 2010-02-09T18:49:34.093