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コマンドに、“を追加しました。ファイル名に空白文字が含まれている場合に、コピーされないことへの対策です。