ホームページ » の仕方 » 古いログファイルを削除するプロセスの自動化

    古いログファイルを削除するプロセスの自動化

    そこにある多くのサービスやプログラムは、彼らがしていることすべてについての監査証跡としてログファイルを生成しますが、それらがそれらの有用性を上回ったときにこれらのファイルを削除する機能を持っているものはほとんどありません。その結果、これらのログファイルはあなたのシステム上に置かれ、(時にはあなたが知っている以上に)スペースを使い果たし、アクセスする必要がある時間のためにディレクトリを散らかっています。.

    あなたがこれらのファイルを必要としないのであれば、なぜそれらを保管しますか?システムをきれいに整理するために、これらの古いログファイルを簡単に削除する方法を紹介します。.

    もちろん、以下で説明している方法はログファイルの管理にすぐに役立ちますが、他の種類の「期限切れ」ファイル(バックアップなど)にも同じ手法を適用できます。.

    最終更新日に基づいてファイルを削除する

    ファイルの最終更新日のみに基づいて既存のログファイルを消去したい場合は、FORFILESコマンドを使用するだけです。例えば:

    ファイル/ P“ C:ログファイル” / S / D -7 / C“ CMD / C DEL / F / Q @PATH”

    上記のコマンドは、 "C:LogFiles"フォルダからすべてのファイル、および先週変更されていないすべてのサブフォルダを削除します。.

    FORFILESコマンドは検索パターンと日付関数でかなり柔軟です。たとえば、数字の代わりに「-1/13/2010」のように日付を入力すると、指定した日付より前に最後に変更されたファイルを削除できます。.

    FORFILESが実行できることに関するすべての詳細を取得するには、コマンドプロンプトから次のコマンドを使用してオンラインヘルプを表示します。

    プロフィール/?

    ファイル名の日付パターンに基づいてファイルを削除する

    多くのアプリケーションおよびサービスは、1日に1つのログファイルを有するように日付パターンに基づいてログファイルを生成する(すなわち、Log100113.txt、Backup-2010-01-13.zipなど)。このような種類のファイルの場合は、最終更新日ではなくファイル名に組み込まれているファイルの日付に基づいて削除することをお勧めします。これは過去3か月間のすべてのログファイルの保存などのシナリオに役立ちます。残念ながら、Windowsにはこのタイプのロジックを持つネイティブコマンドはありませんが、バッチスクリプトを使うとこのタスクを簡単に処理できます。.

    スクリプトの使用法のコメントに例が含まれているので、理解するのはかなり簡単なはずです。.

    スクリプト

    @ ECHO OFF ECHO日付パターンによる削除ECHO作成者:Jason Faulkner ECHO SysadminGeek.com ECHO。エコー。 REMファイル命名パターンにMMまたはDD、あるいはその両方を使用する日付に基づいてファイルを削除/選択します。 REM REMの使用法:REM DeleteByDatePattern / M | NumberToKeepパスPatternPrefix PatternPostfix [/ L | / D / DEL] REM / M使用されているパターンが月に基づいていることを指定します。 REM / D使用されているパターンが日数に基づいていることを指定します。 REM NumberToKeep REM現在までの月数(/ M)または日数(/ D)。 REMたとえば、1を入力すると現在の月/日のみが保持され、6を入力すると現在のマイナス5が保持されます。REM Path検索するルートの場所。サブディレクトリが検索されます。 REM PatternPrefix REM検索文字列を作成するときに月/日の前に配置されるファイル検索パターン。 REM PatternPostfix REM検索文字列を作成するときに月/日の後に配置されるファイル検索パターン。 REM / L(オプション)パターンに一致するすべてのファイルを一覧表示しますが、それらは削除しません。 REM / DEL(オプション)パターンと一致するすべてのファイルを削除します。 REM REM例:REM DeleteByDatePattern / M 3 "%WinDir%system32LogFiles" ex? ??。log / DEL REM現在および過去2か月を除くすべてのIISログファイル(Windows Server 2003)を削除します。 REM DeleteByDatePattern / D 7 "D:バックアップ" *  -  ????  -  ??  -  .zip / DEL REM現在の週を除くすべてのzipファイルをD:Backupフォルダーから削除します。 REM上記のファイル名パターンは "* -YYYY-MM-DD.zip"です。REM DeleteByDatePattern / M 0 "C:" *()* / L REMパターンに一致するCドライブ上のすべてのファイルのリストを印刷します。 * -MM- * "(MMは01-12に置き換えられます)REM DeleteByDatePattern / D 14" C:ログ "Log  -  ???? .txt REMスクリプトによって処理されるすべてのパターンのリストを印刷します。 SETLOCAL EnableExtensions EnableDelayedExpansion REM Windowsの日付/時刻設定が 'DayOfWeek M / D / YYYY'形式に設定されていると仮定します。 REMあなたのフォーマットが違っているなら、あなたはそれらが整列するように以下の変数を変更する必要があるでしょう。 FOR / F "トークン= 1,2,3,4 delims = /" %% IN( 'DATE / T')DO(SET月= %% B SET日= %% C SET年= %% D)IF / I %1 == / M(SET保持=%月%SET最大= 12)IF / I %1 == / D(SET保持=%日%SET最大= 31レム作業中SET / A PrevMonth =%Month%-1 IF!PrevMonth!EQU 2(SET最大= 28 REM閏年…必要に応じてさらに追加する。IF / I%年間%EQU 2012 SET最大= 29 IF / I%年%EQU 2016 SET最大= 29)IF / I!前最大!EQU 4 SET最大= 30 IF / I!前最大!EQU 6 SET最大= 30 IF / I!前最大!30 EQU 9 SET最大= 30 IF / I!PrevMonth!EQU 11 SET最大= 30)SET電流=%維持%SET / A維持=%維持% - %2 + 1 REM削除する範囲を決定します。 SET / A RemoveHighStart =%現在の%+ 1 IF / I%%LSSを保持1(SET RemoveLow = 0 SET / A RemoveHighEnd =%保持%+%最大%-1)ELSE(SET / A RemoveLow =%保持%-1 SET RemoveHighEnd =%Max%)REMすべての下限値を下回って処理します。 FOR / L %% Z IN(1,1、%RemoveLow%)DO CALL:%% Z%3%4%5%6 REM処理を実行してください。 FOR / L %% Z IN(%RemoveHighStart%、1、%RemoveHighEnd%)呼び出し:処理%% Z%3%4%5%6終了後藤終了:処理設定キー= 0%1設定キー=%キー: 〜-2%SET Target = "%〜2%〜3%Key %%〜4" ECHOターゲットパターン:%Target%IF / I %5 == / L DIR%Target%/ B / S IF / I %5 == / DEL DEL / F / S / Q%目標%GOTO終了:終了

    プロセスを自動化する

    FORFILESコマンドはWindows固有のものですが、DeleteByDatePatternスクリプトは、Path変数で定義されたフォルダー(Windowsフォルダーなど)に配置して、ネイティブコマンドであるかのように呼び出すことができます。これが完了すると、毎日、毎週、毎月実行される単一のコマンド(単一の場所から削除する必要がある場合)またはバッチファイル(複数の場所から削除する必要がある場合)のいずれかのスケジュールタスクを作成できます。またはいつでも.

    あなたが設定し忘れることができるもう一つのこと.

    リンク集

    Sysadmin GeekからDelete By Date Patternスクリプトをダウンロードします。