【bat】バッチファイルでファイルサイズが0のファイルを自動削除する方法

【bat】バッチファイルでファイルサイズが0のファイルを自動削除する方法 bat

不要な0バイトファイル(サイズが0のファイル)は、ログファイルや一時ファイルなどで意図せず作成されることがあります。これらのファイルが大量に蓄積すると、管理が煩雑になるため、自動で削除するバッチ処理を用意しておくと便利です。

ファイルサイズが0のファイルを削除する基本バッチ

以下のバッチファイルは、指定したフォルダ内にあるサイズが0のファイルを自動で削除します。

@echo off
setlocal

rem 対象フォルダを指定(カレントディレクトリを使用する場合は . にする)
set "TARGET_DIR=C:\your\path\to\folder"

rem 0バイトのファイルを検索して削除
for /R "%TARGET_DIR%" %%F in (*) do (
  if %%~zF equ 0 (
    echo 削除中: %%F
    del "%%F"
  )
)

endlocal

for /R “%TARGET_DIR%” %%F in (*) do
指定ディレクトリ内を再帰的に走査してすべてのファイルを対象にします。

%%~zF
ファイルのサイズ(バイト)を取得します。

if %%~zF equ 0
サイズが0バイトのファイルのみに処理を限定します。

del “%%F”
対象ファイルを削除します。

サブフォルダを含めない場合

サブフォルダ内のファイルを対象にせず、指定フォルダ直下のみで処理を行いたい場合は以下のように変更します。

@echo off
setlocal

set "TARGET_DIR=C:\your\path\to\folder"

pushd "%TARGET_DIR%"
for %%F in (*) do (
  if %%~zF equ 0 (
    echo 削除中: %%F
    del "%%F"
  )
)
popd

endlocal

実行時の注意点

  • 削除操作は元に戻せません。必ずテスト環境で動作確認を行ってから運用してください。
  • 削除ログを残したい場合は echo %%F >> delete_log.txt を追加することで記録できます。

まとめ

フォルダ整理や定期メンテナンスに活用できる便利なバッチ処理です。タスクスケジューラと組み合わせて、定期的に自動実行することもおすすめです。