コンピュータのメンテナンス
 Computer >> コンピューター >  >> トラブルシューティング >> コンピュータのメンテナンス

このWindowsスクリプトでログと一時ファイルを管理下に置く

私は友人や家族のコンピューターの問題を手伝うことに多くの時間を費やしてきましたが、他のすべての問題の中でも、私が何度も目にする問題の1つは、一時ファイルとログファイルがディスクの縮小を食いつぶすことです。スペースを確保し、最終的にシステムを停止させます。

一時的なインターネットファイルフォルダは一般的な原因ですが、コントロールパネルのインターネットオプション内で削除されるようにファイルを設定するだけなので、簡単に解決できます。ただし、その厄介なWindows一時フォルダ、または削除されることのないランダムなジャンクで蓄積され続けるすべてのアプリケーションログファイルについてはどうでしょうか。最初は、これらはそれほど問題にはなりませんが、時間の経過とともに、蓄積されたジャンクは、有用な目的を果たさない古いファイルの膨大な山になります。

適切に作成されたアプリケーションは、不要になったログファイルまたは一時ファイルを削除しますが、プログラムが多すぎると、その後は適切にクリーンアップされません。何年も経つと、非常に厄介なコンピューターが残ります。ただし、特定のログフォルダー(Windowsの一時フォルダーまたはウイルス対策通知ログフォルダーなどのアプリケーションログフォルダー)を知っている場合は、次のWindowsスクリプトを使用して、古いログファイルを定期的にクリーンアップできます。数日より。

Windowsスクリプトで一時ファイルをクリーンアップ

Windowsスクリプティングを初めて使用する場合は、しばらく前に書いたWSHチュートリアルをざっと見てください。ネットワーク設定を変更したり、ウイルス対策ソフトウェアやマルウェアスキャンソフトウェアを自動的にスケジュールしたりするなど、Windowsスクリプトでできるすばらしいことがたくさんあります。

明らかに、これらのアプリケーションログファイルまたは一時ファイルフォルダを制御できるようにクリーンアップルーチンをスケジュールする場合は、Windowsスクリプトが間違いなく解決策です。

クリーンアップWindowsスクリプトの作成

このWindowsスクリプトは、特定の1つのディレクトリに焦点を当て、そのディレクトリ全体を調べて、変更日が数日より古いファイルを探します。次に、それらのファイルを削除します。次に、スクリプトはすべてのサブディレクトリを通過し、同じチェックとクリーンアップを実行します。複雑に聞こえますか?そうではありません。スクリプトの最初の部分は次のようになります:

Option Explicit 

On Error Resume Next

Dim oFSO, oFolder, sDirectoryPath

Dim oFileCollection, oFile, sDir

Dim iDaysOld

iDaysOld = 3

このセクションでは、ディレクトリへのアクセスに使用するファイルシステム変数と、クリーンアップするファイルを宣言します。 「iDaysOld」変数を設定すると、保持するファイルの経過時間がスクリプトに通知されます。この場合、3日以上経過したファイルはすべて保持しています。

次は、非常にシンプルなクリーンアップセクションです。

' ***** CLEAR OUT OLD FILES IN LOG FOLDER *****

sDirectoryPath = "C:\Users\Owner\AppData\Local\Temp\"

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder(sDirectoryPath)

Set oFileCollection = oFolder.Files

For each oFile in oFileCollection

If oFile.DateLastModified < (Date() - iDaysOld) Then

oFile.Delete(True)

End If

Next

上記のセクションは、Windowsファイルシステムに接続してから、「sDirectoryPath」変数で定義したディレクトリに接続します。この最初のループは、ディレクトリ内の個々のファイルを調べ、変更された日付をチェックして、定義したファイルの経過時間と比較します。 3日以上経過している場合は、そのファイルに対して削除操作を実行します。

これはファイルではうまく機能しますが、Windowsの一時ディレクトリなどのフォルダ内のすべてのサブディレクトリについてはどうでしょうか。スクリプトのこの次のセクションでは、次にすべてのサブディレクトリをファイルし、そこにあるファイルに対しても同じファイル操作を実行します。

For Each oSubFolder In oSubFolders

sDirectoryPath = "C:\Users\Owner\AppData\Local\Temp\" & oSubFolder

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder(sDirectoryPath)

Set oFileCollection = oFolder.Files

For each oFile in oFileCollection

If oFile.DateLastModified < (Date() - iDaysOld) Then

oFile.Delete(True)

End If

Next

If oSubFolder.Size = 0 Then oSubFolder.Delete(True)

Set oFSO = Nothing

Set oFolder = Nothing

Set oFileCollection = Nothing

Set oFile = Nothing

Next

最後に、通過するサブディレクトリがなかった場合は、オブジェクトをクリアすることを忘れないでください。

 Set oFSO = Nothing

Set oFolder = Nothing

Set oFileCollection = Nothing

Set oFile = Nothing

WScript.Quit

それはそれと同じくらい簡単です。上記のスクリプトは、クリーンアップする可能性のあるすべてのフォルダーをクリーンアップします。定期的にクリーンアップしたいディレクトリごとに個別のスクリプトを作成し、「sDirectoryPath」をクリーンアップしたいディレクトリに設定して、「C:\temp\」や「」などのディレクトリに保存します。 c:\vbscripts\"。これらのスクリプトを設定したら、それらのスクリプトをスケジュールする準備が整います。

クリーンアップスクリプトのスケジュール

クリーンアップスクリプトをスケジュールするには、Windows 7で、管理ツールに移動してタスクスケジューラを開きます。

このWindowsスクリプトでログと一時ファイルを管理下に置く

[アクション]メニュー項目から基本タスクを作成します。

このWindowsスクリプトでログと一時ファイルを管理下に置く

次に、そのディレクトリをクリーンアップするときにいつでも実行するように定期的なスケジュールを設定します。私の場合、通常は常にログインしてコンピューターで作業している日曜日の正午にクリーンアップスクリプトを実行します。スクリプトはバックグラウンドで実行されるだけです。

このWindowsスクリプトでログと一時ファイルを管理下に置く

個々のログまたは一時ディレクトリをクリーンアップするには、作成したWindowsスクリプトごとにスケジュールされたタスクを設定する必要があります。

このWindowsスクリプトでログと一時ファイルを管理下に置く

タスクスケジュールで作成した後でスクリプトをテストするには、[アクション]、[実行]の順にクリックします。

このWindowsスクリプトでログと一時ファイルを管理下に置く

そのログまたは一時フォルダ内の数日より古い(またはスクリプトを設定した)すべてのファイルが自動的に削除されるのを確認する必要があります。私の場合、WindowsTempフォルダーを毎週クリーンアップします。このスクリプトを実行した後、フォルダ内の約45個のファイルが、サブディレクトリ内のすべてのファイルを含め、最新のファイルの約20個程度に切り詰められるのを確認しました。

このWindowsスクリプトでログと一時ファイルを管理下に置く

コンピューターを保守するのは非常に困難な場合があります。システムやあらゆる種類のアプリケーションが常にログファイルに書き込んだり、Windowsの一時フォルダーにジャンク一時ファイルを作成したりすると、その作業はさらに困難になる可能性があります。このスクリプトは、サーバー上でバッチジョブまたはスクリプトを定期的に実行する可能性のあるIT技術者にとって特に役立ちます。これらのスクリプトはすべて、実行されるたびに新しいログファイルを作成します。最も古いログファイルを定期的にクリーンアップするWindowsスクリプトを実行することで、上記のようなWSFファイルを記述して、それらのログディレクトリをきれいに保つことができます。必要なログファイルの履歴を保持できますが、本当に古いログファイルはクリーンアップします。しないこと。

そのようなスクリプトのいくつかの創造的な使用法を考えられますか?一時フォルダとログファイルを手動でクリーンアップしますか?このようなスクリプトで作業を節約できますか?試してみて、下のコメントセクションであなたの考えやフィードバックを共有してください!

画像クレジット:Shutterstock経由のジャンクヤードのクレーン


  1. Windows でフォルダまたはファイルをパスワードでロックする方法

    不正アクセスから保護するために、フォルダやファイルをパスワードでロックする必要がある場合があります。この記事には、パスワードを持っていない人がアクセスできないようにするために、Windows OS のフォルダまたはファイルをパスワードで保護するための最も安全な無料の方法が含まれています。 ファイルをロック/暗号化する前のヒント: 1. ファイルをロックするときは常に強力なパスワードを使用し、安全な場所にメモしておいてください。2. EFS または BitLocker 暗号化を使用する場合は、暗号化されたファイルと回復キーを必ず別のデバイス (外付け USB ドライブなど) にバックアッ

  2. Windows 11 PC で一時ファイルを削除する方法

    一時ファイル (Windows 11 では一時ファイルとも呼ばれます) は、エクスペリエンスの一貫性を確保するために、アプリとオペレーティング システムによって保存されるデータです。一般に、一時ファイルは、コンピューターの通常の動作に悪影響を与えることはありません。ログ、システム キャッシュ、およびその他の非永続データが含まれます。ただし、コンピューターを長時間使用すると、一時ファイルが大量にデータサイズで蓄積し始めます。 GB のデータがサードパーティ製アプリによって一時フォルダーに保存されている可能性があり、使用しなくなりました。または、プログラムがタスクを完了したときに、Windows