バッチファイルを使えば、フォルダ内にあるさまざまな種類のファイルを、拡張子ごとに自動的に仕分けることが可能です。大量のファイルを整理したいときや、定期的に特定のディレクトリを分類したいときに非常に役立ちます。
この記事では、拡張子ごとにファイルを自動で振り分けるバッチファイルの作成方法と、その使い方を解説します。
処理の概要
対象のフォルダ内にあるすべてのファイルを取得し、それぞれのファイルの拡張子を判定。その拡張子名と同じ名前のフォルダを自動で作成し、対応するフォルダへファイルを移動します。
たとえば document.txt は txt フォルダへ、image.jpg は jpg フォルダへ移動されます。
バッチファイルのコード
以下が拡張子ごとにファイルを振り分けるバッチファイルのサンプルです。
@echo off
setlocal enabledelayedexpansion
REM 対象のフォルダを指定(このバッチファイルと同じフォルダを対象にする場合は .)
set "SOURCE=."
REM フォルダ内のすべてのファイルをループ
for %%f in ("%SOURCE%\*.*") do (
if not "%%~xff"=="" (
set "EXT=%%~xf"
set "EXT=!EXT:~1!" REM ドットを取り除く
REM 拡張子名のフォルダがなければ作成
if not exist "%SOURCE%\!EXT!\" (
mkdir "%SOURCE%\!EXT!"
)
REM ファイルを対応するフォルダに移動
move "%%~f" "%SOURCE%\!EXT!\" >nul
)
)
echo 処理が完了しました。
pause
バッチファイルの使い方
- メモ帳を開いて上記のコードを貼り付けます。
- .bat 拡張子で保存します(例:sort_by_extension.bat)。
- 整理したいファイルが入っているフォルダにこのバッチファイルを置き、実行します。
実行すると、各拡張子ごとにフォルダが作成され、それぞれのファイルが自動で移動されます。
注意点
- フォルダ内のサブフォルダ内のファイルは対象外です。
- 同名ファイルが既に存在する場合は上書きされる可能性があります。必要に応じてバックアップを取ってください。
- 実行中にファイルが使用中だと移動に失敗することがあります。
応用:特定の拡張子だけを対象にする方法
すべての拡張子ではなく、たとえば jpg と png のみを仕分けたい場合は、for ループの対象を以下のように変更します。
for %%f in ("%SOURCE%\*.jpg" "%SOURCE%\*.png") do (
...
)
まとめ
バッチファイルを使えば、簡単な記述でファイルの整理作業を効率化できます。今回紹介したスクリプトを応用することで、定期的なファイル管理や、ダウンロードフォルダの自動整頓など、さまざまな場面で活用できます。
手動での仕分け作業に時間をかけるより、バッチ処理で一瞬で片付けてしまいましょう。