2017年02月19日

forfilesで古いファイルを処理する




PC は使っていると、もう使わないようなファイルが溜まっていきます。

 フォルダの同期・バックアップ方法4:FireFileCopyを使って履歴バックアップする
 バックアップ

に書いたように、私は自分が編集したファイルは全てファイルを履歴付きで別フォルダにバックアップを取っています。過去10年近くに渡ってファイルが残っています。

さらに、自分でツールを作るので、そのデバッグやバックトレーサビリティのために、それらのツールは、結構な量のログファイルを作ります。
特に、自動的にバックグラウンドで実行しているようなツールは、

 UWSC170224.log
 UWSC170225.log
 UWSC170226.log
   :
 UWSC170230.log

みたいに、日付をキーにして別ファイルを作ってます。

■ファイルを消すタイミング

どういうタイミングで消しているかというと、以前は「気がついたときに」というのが多かったです。

最近のハードディスクは大容量なので、たかだがログファイルごときでディスク領域を圧迫するということはあまり感じなくなりましたが、性格的に「不要なものがある」というのが気持ち悪いので。

直近のデータは必要になるかもしれないので、消すのは原則古いファイルだけにしてます。
どのくらい古ければもういらないのかというと、それはファイルごとに異なります。

たとえば、このブログに投稿するのに使っているツールのログは、ちゃんと登録できたかどうかを確認するのが1週間位遅れることがあるので、マージンを取って2週間とか。

■古いファイルを探して出してくれるツール

やっと本題ですが、古いファイルを探し出すツールは、Windows7以前は、自分でツールを作ってました。ある特定の条件を満たすファイルを探し出すように、全フォルダを総なめして、その結果をパラメータで指定したコマンドに与えるようなツール。

Windows7 以降は、このコマンドが使えるようになったので、不要になりましたが。

 forfiles

使い方はいたって簡単で、

 forfiles /d -4 /c "cmd /c del @file"

ってやっていやると、現在のフォルダから 4 日以上変更されていないファイルを探し出して削除してくれます。

 フォルダの同期・バックアップ方法4:FireFileCopyを使って履歴バックアップする

で書いたように、ffc.exe を使うと、古いファイルは別名(私の環境設定では、_sync(日付) をファイル名に追加)して保存されているので、c:\usr\@backup (私の全てのファイルがバックアップされているフォルダ)で、これを検索しやるには

 forfiles /d -120 /p c:\usr\@backup /m *_sync*.txt /c "cmd /c del @path"

で120日(約3ヶ月)以上前の履歴ファイルだけ削除してくれます。

■forfiles の使い方

forfiles コマンドの使い方は、

☆――――――――――――――――――――――――――
C:\>forfiles /?

FORFILES [/P パス名] [/M 検索マスク] [/S]
[/C コマンド] [/D [+ | -] yyyy/MM/dd | dd]

説明:
ファイル (または、ファイルのセット) を選んで、そのファイル上のコマンドを実行します。これはバッチ ジョブの使用に便利です。

パラメータ一覧:
/P パス名 検索を開始するパスを示します。
既定のフォルダーは現在実行中の
ディレクトリ (.) です。
――――――――――――――――――――――――――☆


詳細は次回につづく。

posted by 管理人 at 13:31| Comment(0) | TrackBack(0) | PCアプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック