Categories: Windows11

Windowsバッチファイルで空フォルダを一括削除する方法|実用サンプルコード付き解説

パソコンを長く使っていると、知らないうちに不要なフォルダが増えてしまうことがあります。特にバックアップや作業フォルダを繰り返し作成・削除していると、空のフォルダが大量に残ってしまい、管理が煩雑になりがちです。手作業で1つずつ確認して削除するのは効率が悪いため、Windowsのバッチファイルを活用して自動で「空のフォルダを探して削除する」仕組みを用意しておくと便利です。
本記事では、バッチファイルを使って空フォルダを削除する方法を、初心者でもわかりやすいように具体的なサンプルコードと実行手順を交えて解説します。さらに、応用編として「特定のフォルダだけ対象にする方法」や「ログを残す方法」についても紹介します。


空フォルダを削除する必要性とは

空のフォルダは一見すると害がないように思えますが、整理整頓の観点からは放置しない方がよいケースがあります。

  • フォルダ数が増えると、目的のファイルが探しにくくなる。
  • バックアップ時に無駄な空フォルダもコピーされてしまう。
  • プログラムで参照する際に、意図せず空のフォルダが存在して不具合の原因となることがある。

こうした理由から、特にプロジェクトや業務用PCでは定期的に空フォルダを削除しておくことがおすすめです。


バッチファイルの基本とは

Windowsバッチファイル(.bat)は、コマンドプロンプトで実行できる命令をまとめたテキストファイルです。

  • 拡張子は .bat または .cmd
  • メモ帳などのテキストエディタで作成可能
  • ダブルクリックでまとめてコマンドを実行できる

今回の目的は「空のフォルダを探して削除」なので、for コマンドと rd コマンドを組み合わせて使います。


空フォルダ削除のシンプルサンプルコード

以下は、指定フォルダ配下の空フォルダをすべて削除するバッチファイルの例です。

@echo off
set TARGET=C:\test

for /f "delims=" %%d in ('dir "%TARGET%" /ad/b/s ^| sort /R') do (
    rd "%%d" 2>nul
)
echo 空フォルダ削除が完了しました。
pause

コード解説

  1. set TARGET=C:\test
    削除対象とするルートフォルダを指定します。
  2. dir "%TARGET%" /ad/b/s
    指定フォルダ以下のすべてのディレクトリを一覧表示します。
  3. sort /R
    階層の深いフォルダから順に処理するため、逆順にソートします。
  4. rd "%%d" 2>nul
    空フォルダなら削除されます。ファイルが入っている場合は削除できないため無視されます。

実行方法

  1. 上記コードをメモ帳にコピー。
  2. delete_empty_folders.bat などの名前で保存。
  3. ダブルクリックで実行。

対象フォルダのパスを変更すれば、任意の場所で利用できます。


応用編:削除ログを残す

削除したフォルダを確認できるように、ログを残すことも可能です。

@echo off
set TARGET=C:\test
set LOG=C:\delete_log.txt

echo 削除ログ開始 > "%LOG%"
for /f "delims=" %%d in ('dir "%TARGET%" /ad/b/s ^| sort /R') do (
    rd "%%d" 2>nul && echo 削除: %%d >> "%LOG%"
)
echo 完了しました。ログは %LOG% に保存されました。
pause

このコードでは、削除できたフォルダだけをログファイルに記録します。


応用編:特定の条件を追加する

空フォルダでも、削除したくないケースもあります。その場合は条件分岐を加えられます。

例:特定の名前を含むフォルダは残す

@echo off
set TARGET=C:\test

for /f "delims=" %%d in ('dir "%TARGET%" /ad/b/s ^| sort /R') do (
    echo %%~nd | findstr /I "keep" >nul
    if errorlevel 1 rd "%%d" 2>nul
)

この例では、フォルダ名に「keep」を含むフォルダは削除対象から外します。


注意点

  • ごみ箱に入らず完全削除されるため注意。
  • 実行前に必ずテスト環境で試すこと。
  • 管理者権限が必要なフォルダには適用できない場合がある。

定期的な自動実行(タスクスケジューラ)

バッチファイルをWindowsタスクスケジューラに登録すれば、自動で定期的に空フォルダを削除できます。例えば「毎週日曜日の深夜に実行」と設定すれば、手動操作なしで整理が進みます。


まとめ

本記事では、Windowsバッチファイルを使って空のフォルダを探して削除する方法を解説しました。

  • forrd を組み合わせるだけで実現可能。
  • ログを残す、削除対象を制限するなど応用も可能。
  • タスクスケジューラで自動化すればさらに便利。

シンプルですが非常に実用的なテクニックなので、ぜひ日常業務やPC整理に役立ててください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。