I just want to say "Thanks again" to everyone who helped me get past my roadblocks with C++ ... I don't think I'm there yet, but I did manage my first working program today. Couldn't a done it without ya!

Code:
#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
#include <string>
#include <windows.h>
#include <shlwapi.h>

using namespace std;

/////////////////////////////////////////////////////////////////////
// Directory listing in a class
//
class DirList
  { private:
      vector <string> Files;
      string Path;
    public:
      DirList();
      DirList(string Folder);
      ~DirList();
      bool GetFiles(string Folder);
      void ListFiles();
      void Sort();
      void Randomize();
      bool SaveList(string Target);
  };

  bool DirList::GetFiles(string Folder)
    { Files.clear();
      Path = Folder;
      Folder += "\\*.*";
      WIN32_FIND_DATA fd;
      HANDLE ff = FindFirstFile(Folder.c_str(),&fd);
      if (ff == INVALID_HANDLE_VALUE)
        return false;
      do
       { if (fd.cFileName[0] != '.')
           Files.push_back(Path + "\\" + fd.cFileName); }
      while ( FindNextFile(ff,&fd) );
      FindClose(ff);
      return true; }

  void DirList::ListFiles(void)
    { for (unsigned int i = 0; i < Files.size(); i++)
       cout << Files[i] << endl; }

  void DirList::Sort(void)
    { sort(Files.begin(),Files.end()); }

  void DirList::Randomize(void)
    { random_shuffle(Files.begin(),Files.end()); }

  bool DirList::SaveList(string Target)
    { ofstream outfile(Target.c_str());
      if (outfile.fail())    // file not open
        return false;
      for (unsigned int i = 0; i < Files.size(); i++)
        outfile << Files[i] << endl;
      outfile.close();
      return true; }

  // structors
  DirList::DirList()
    { cout << "cold init" << endl; }

  DirList::DirList(string Folder)
    { GetFiles(Folder); }

  DirList::~DirList()
    { cout << endl << "Finished!" << endl; }


////////////////////////////////////////////////////////////////////
// Help splash
void ShowHelp(void)
  { cout << "DirToFile -- Save directory lists in files" << endl;
    cout << endl;
    cout << "USAGE :   DirToFile -R <TARGET FILE> <SOURCE FOLDER>" << endl;
    cout << endl;
    cout << "-R Randomize file list (for playlists)" << endl;
    cout << endl;
    cout << "Enclose file and path names with spaces in quotes." << endl;
    cout << endl;
    cout << "Example: DirToFile -r Playlist.m3u \"d:\\My Files\\Music\"" << endl;
    cout << endl << endl;
    exit(0); }


/////////////////////////////////////////////////////////////////////
// Program entry point
//
int main(int argv, char* argc[])
  { // helper splash
    if (argv < 3)
      ShowHelp();

    // parse command line
    bool    Shuffle = false;
    string  Target  = "test.txt";
    string  Folder  = "";

    for (int x = 1; x < argv; x++)
      PathUnquoteSpaces(argc[x]);

    if (!strcmp(argc[1],"-R") || (!strcmp(argc[1],"-r")))
      { Shuffle = true;
        if (argc[2])
          Target = argc[2];
        if (argc[3])
          Folder = argc[3]; }
    else
     {  if(argc[1])
          Target = argc[1];
        if (argc[2])
          Folder = argc[2]; }

    cout << Target << " from " << Folder << endl;

  if (Target.length() < 3)
    ShowHelp();

  if (Folder.length() < 1)
    ShowHelp();

  // sorted or scrambled
  DirList Dir(Folder);
  if (Shuffle)
    Dir.Randomize();
  else
    Dir.Sort();

  // show list on screen
  Dir.ListFiles();
  // write the file
  Dir.SaveList(Target);
  return 0; }
Now the hard part begins....