【PR】 バッチファイル

ファイルを種類ごとに自動でフォルダ分けするバッチファイル【図解】

2025-03-05

アイキャッチ画像

この記事では、ファイルを種類ごとに自動でフォルダ分けするバッチファイルを紹介します。

このバッチファイルを実行すると、以下のイラストのように、ファイルが対応フォルダの中に自動で振り分けられます。

実行前

目的フォルダの中にバッチファイルを配置した状態(バッチファイル実行前)

実行後

バッチファイルによって、ファイルのフォルダ分けが終了した状態

このバッチファイルは、この記事内のコードをメモ帳に貼り付けるだけで誰でも簡単に使えます。

大量のファイルを整理するのに便利です

陰キャくじら
陰キャくじら

バッチファイルの作成方法

このバッチファイルの作り方はシンプルです。

別の記事で紹介した「バッチファイルの作成方法」の手順3で、以下のコードをメモ帳に貼り付けるだけです。

@echo off
setlocal enabledelayedexpansion

:: V01L01

echo ファイル整理プログラム
echo ----------------------
echo このプログラムは現在のフォルダ内のファイルを拡張子ごとに分類します。
echo 各拡張子のフォルダが作成され、対応するファイルが移動されます。
echo.
echo 実行前にファイルのバックアップを取ってください。
echo.

:CONFIRM
set /p ANSWER="処理を開始しますか? (Y/N): "

if /i "%ANSWER%"=="Y" goto START
if /i "%ANSWER%"=="N" goto END
echo 無効な入力です。Y または N を入力してください。
echo.
goto CONFIRM

:START
echo.
echo ファイルの整理を開始します...
echo.

:: カウンター初期化
set "TOTAL_FILES=0"
set "TOTAL_FOLDERS=0"
set "FAILED_FILES=0"
set "SKIPPED_FILES=0"

:: 現在のディレクトリ内のすべてのファイルをループ処理
for %%F in (*.*) do (
    :: バッチファイル自体は処理しない
    if not "%%F"=="%~nx0" (
        :: ファイルの拡張子を取得(ドットを除く)
        set "ext=%%~xF"
        set "ext=!ext:~1!"
        
        :: 拡張子が空の場合は "no_extension" とする
        if "!ext!"=="" (
            set "ext=no_extension"
        )
        
        :: 拡張子用のフォルダが存在しない場合は作成
        if not exist "!ext!" (
            mkdir "!ext!" 2>nul
            if !errorlevel! equ 0 (
                echo 新しいフォルダを作成: !ext!
                set /a "TOTAL_FOLDERS+=1"
            )
        )
        
        :: 移動先に同名のファイルが存在するかチェック
        if exist "!ext!\%%F" (
            echo スキップ: "%%F" - 移動先に同名のファイルが既に存在します
            set /a "SKIPPED_FILES+=1"
        ) else (
            :: ファイルを対応するフォルダに移動
            echo %%F を !ext! フォルダに移動中...
            move "%%F" "!ext!\" >nul 2>nul
            if !errorlevel! equ 0 (
                set /a "TOTAL_FILES+=1"
            ) else (
                echo エラー: "%%F" の移動に失敗しました。
                set /a "FAILED_FILES+=1"
            )
        )
    )
)

echo.
echo 処理が完了しました!
echo -------------------
echo 移動したファイル数: %TOTAL_FILES%
echo スキップしたファイル数: %SKIPPED_FILES%
echo 移動に失敗したファイル数: %FAILED_FILES%
echo 作成したフォルダ数: %TOTAL_FOLDERS%
goto END

:END
echo.
echo プログラムを終了します。
pause

バッチファイルの名前は何でもかまいません。

バッチファイルの使い方

このバッチファイルの実行前には、念のため、バックアップをとってください

このバッチファイルは、以下の手順で使えます。

目的フォルダの中にバッチファイルを配置します

整理を行いたいファイルが存在するフォルダの中にバッチファイルを配置します。

以下の例では、「テスト」フォルダの中にバッチファイル(ファイル整理.bat)を置きました。

目的フォルダの中にバッチファイルを配置した状態(バッチファイル実行前)

バッチファイルをダブルクリックします

最初に、目的のフォルダ内にバッチファイルを配置したことを必ず確認してください。

意図しないフォルダの中でバッチファイルを実行すると、意図しないファイルが移動されるので注意してください。

Windowsのシステムに関わるようなフォルダの中では、このバッチファイルを実行しないでください。システムに重要なファイルが移動されると、Windowsの動作に影響を及ぼします。

今回の例では、以下のイラストのフォルダの中にバッチファイルを配置しました。

目的フォルダの中にバッチファイルを配置した状態(バッチファイル実行前)

処理を開始するには、上のイラストの状態で、バッチファイルをダブルクリックします。

バッチファイルをダブルクリックすると、以下のメッセージが出ます。

処理実行の許可をユーザーに求めるメッセージ

処理を開始するには、上のイラストの状態で「Y」(半角)を入力してエンターキーを押します。

エンターキーを押すと、自動でファイル整理が始まり、以下のようなメッセージがでます。

処理が終了した状態(処理の詳細が示されている)

上のイラストから、処理の詳細を確認することができます。

実際のフォルダの中では、以下のイラストのように、ファイルの種類ごとにフォルダが作成され、その中に、対応する種類のファイルが移動された状態になります(バッチファイル自体は、移動されません)。

バッチファイルによって、ファイルのフォルダ分けが終了した状態

基本的な操作は以上です。

特徴

このバッチファイルの特徴を以下に記載します。

隠しファイルの扱い

隠しファイルは移動の対象になりません。

ファイルの上書き防止仕様

移動先のフォルダ内に既に同名のファイルが存在する場合、そのファイルはそのフォルダ内に移動されることなく、そのファイルの処理はスキップされます。

これは、ファイルの上書きを防ぐための仕様です。

既に同名のファイルが移動先に存在する場合は、以下のようなメッセージが出て、そのファイルの処理がスキップされます。

既に同名のファイルが移動先に存在するため、そのファイルの移動がスキップされたことを示すメッセージ

ファイル名に「!」を含むファイル

ファイル名に「!」が含まれていた場合、そのファイルの移動に失敗します。

セキュリティソフトによって処理が遮断された場合

パソコンの環境によっては、セキュリティソフトによって処理が一時的に遮断され、以下のようなメッセージ(一例です)がでる場合があります。

セキュリティソフトによってバッチファイルの処理が遮断された場合に出るメッセージの例

このような場合は、「アプリを許可する」を選んでください。

(メッセージや、アプリの許可操作は、セキュリティソフトによって異なります)

その他の関連バッチファイル

もしご興味があれば、以下のバッチファイルもご覧ください!

陰キャくじら
陰キャくじら

ファイル名を一括で変更するバッチファイルこちら

ファイルの拡張子を一括で変更するバッチファイルこちら

ファイル名の一部を一括で変更/削除するバッチファイルこちら

ファイル名に作成日/更新日を一括追加するバッチファイルこちら

ファイル名の先頭/末尾の文字列を追加/削除するバッチファイルこちら

パソコンデータをミラーリングしてUSBメモリにバックアップするバッチファイルこちら

【スポンサーリンク】

-バッチファイル
-,