なぜこんな記事を?
Windowsを使っているとMacと違ってファイルにラベリングできない都合もあって、フォルダ階層でファイル整理することが多いです。その場合に整理すればするほどディレクトリの階層が深くなって後から見返すのが不便になります。
例えば、報告書のPDFファイルを章ごとにフォルダ分けして保存したが、これをすべて一つのフォルダに集めてPDF結合したい場合や、日報CSVファイルを年別フォルダの下の月別フォルダにきれいに保存していたがバックアップに際して一つのフォルダに集約したいということは結構あります。
バッチファイルの中身
以下のコードをメモ帳に打ち込んで、.batの拡張子で保存してください。
@echo off
SETLOCAL enabledelayedexpansion
for /d %%i in (.\*) do (
cd %%i
rem 該当ファイルの拡張子をこの行で指定。
for /r . %%j in (*.pdf) do (
set STR=%%j
set STR=!STR:%CD%\=!
set STR=!STR:\=_!
copy "%%j" "%CD%\!STR!"
)
cd ..
)
ENDLOCAL
使い方
あとはこのバッチファイルをファイルを集約したいディレクトリにおいて、ダブルクリックして実行してください。
そのフォルダにそのディレクトリ以下の該当ファイルがコピーされて集約されます。コピーする時には元々整理されていたフォルダ名を元にリネームされるので集約後のファイルもきちんと整理された状態になります。