フォルダ内からのファイルコピーバッチ

Moodleの改良モジュールとして、名工大さんが開発している「課題一括ダウンロード」パッチを利用させていただいています。多くのレポートファイルを、ZIPでまとめてダウンロードできるので、採点処理などをローカルで行え重宝しています。
ただ、個々の学生のファイルは、ID別(学籍番号別)のフォルダに分けてダウンロードされます。これは個々のファイルが同名であった場合に重複を避けるためで、当然なのですが、いちいちフォルダを開いて行かなければならず、また、Excelなどで一括マクロ処理する時などに、ちょっと面倒でした。
で、バッチファイルで、フォルダ名(ID名)__ファイル名 としてまとめてフォルダにコピーするバッチファイルを作ってみました。

 echo off
 rem フォルダの検索
 for /D %%a in (*) do (
  echo %%a
  rem フォルダ内ファイルの検索
  for %%b in (%%a\*.*) do (
    rem フォルダ内ファイルを親フォルダへコピー
   copy "%%a\%%~nxb" "%%a_%%~nxb"
  )
 )

 これをバッチファイルとしてダウンロード展開したフォルダに保存し、実行するだけ。
 見よう見まねで作ったので、無駄なことをやっているようにも思えますが、まずは目的を達しました。
 %%~nxb  
 というのは、%%bのうち、ファイル名と拡張子のみにして、置き換えるという意味なのだそうです。
バッチファイルコマンドは、いろんな事が出来るのですが、なかなか参照資料がなくて困りますね。
<2010.07.15追記>
copyコマンドに、を追加しました。ファイル名に空白文字が含まれている場合に、コピーされないことへの対策です。