Marumaru's TinyPlaza

(2011.06.14)(tips)DOSバッチで古いバックアップファイルを削除する方法

覚書

データをバックアップするDOSコマンドのバッチファイルを作って毎週流しています。

データはYYYYMMDDの名前のフォルダに格納されるんですが、しばらく放っておくと日付のフォルダがいっぱい溜まってしまいHDDを圧迫するので、気づいた時に古いのを消していたのですが、面倒なので古いバックアップフォルダを消す処理をバッチの追加しました。

  • カレントディレクトリのYYYYMMDD形式(20??????)のフォルダを新しい方から2個残して消します。
  • 更新日ではなく、フォルダ名順で見ています。
  • 残す数はLEAVE_DIR_NUMBERで設定。


@echo off

setlocal enabledelayedexpansion
set /a LEAVE_DIR_NUMBER=2
set /a cnt=0

for /f %%A in ('dir 20?????? /b /o-n') do (
  if !cnt! GEQ %LEAVE_DIR_NUMBER% (
    echo "削除するフォルダ>>" %%A
    rd %%A /s/q
  )
  set /a cnt+=1
)


これで、バックアップバッチの機能が

  1. 古いバックアップフォルダを削除する
  2. 指定したファイルを日付のフォルダコピーする
  3. コピーしたファイルをログに書き出す
  4. FTPからサイトのデータをダウンロードする

と言う結構高機能なものになって一人で悦に入ってます。 ファイル操作するならWSHを使った方が楽なんですけど、レガシーなDOSバッチファイルでするところに格好良さを感じてしまう懐古厨なのでした。

実際、DOSのバッチってシンプルだから簡単な操作をするには便利なんですよね。慣れないと可読性が悪いところはあるけれど。




<(2011.06.11)モンハン再び (2011.06.14)(tips)WSHによるプロセスの二重起動防止スクリプト>