【bat】バッチファイルで指定した期間以前に更新されたファイルを自動削除する方法

ファイルの管理は、特に大量のデータを扱う場合において重要なタスクです。古いファイルを定期的に削除することで、ディスクスペースを節約し、システムのパフォーマンスを維持することができます。この記事では、バッチファイルを使用して指定した期間以前に更新されたファイルを自動的に削除する方法を紹介します。

バッチファイルの基本構造

まずは、基本的なバッチファイルの構造を理解しましょう。以下のコードは、指定したディレクトリ内の30日以上前に更新されたファイルを削除するバッチファイルの例です。

@echo off
setlocal

REM 30日前より古いファイルを削除する
set DAYS=30
set TARGET_DIR=C:\path\to\your\directory

forfiles /p "%TARGET_DIR%" /s /m *.* /d -%DAYS% /c "cmd /c del @path"

endlocal

コードの詳細説明

@echo off
このコマンドは、バッチファイルのコマンドプロンプトに表示されるコマンドを非表示にするためのものです。

setlocal
このコマンドは、バッチファイルの実行中に設定された環境変数がローカルであることを保証します。

set DAYS=30
この行は、削除対象となるファイルの期間を設定しています。ここでは30日としています。

set TARGET_DIR=C:\path\to\your\directory
削除対象のディレクトリを指定します。ここには実際のパスを入力してください。

forfiles /p “%TARGET_DIR%” /s /m *.* /d -%DAYS% /c “cmd /c del @path”
この行は、指定した条件に合致するファイルを削除するコマンドです。

  • /p “%TARGET_DIR%”:ターゲットディレクトリを指定します。
  • /s:サブディレクトリも含めます。
  • /m *.*:すべてのファイルを対象にします。
  • /d -%DAYS%:指定した日数以前のファイルを対象にします。
  • /c “cmd /c del @path”:対象ファイルを削除します。

endlocal
このコマンドは、setlocalでローカルに設定された環境変数の範囲を終了します。

バッチファイルの実行方法

バッチファイルを実行するには、以下の手順に従ってください。

  1. 上記のコードをテキストエディタにコピーします。
  2. ファイル名をcleanup.batとして保存します(拡張子が.batであることを確認してください)。
  3. バッチファイルをダブルクリックして実行します。

注意:この操作は元に戻せません。重要なファイルが削除されないように、必ず事前にバックアップを取ってください。また、テスト環境で動作確認を行ってから本番環境での実行を検討してください。

まとめ

バッチファイルを使用することで、指定した期間以前に更新されたファイルを自動的に削除するプロセスを簡単に実行できます。この方法を活用して、ファイル管理を効率化し、ディスクスペースの無駄を削減しましょう。