ログファイルや一時ファイルなど、日常的に溜まっていくファイルが原因で、ディスクの容量が圧迫され困ることがあります。
この記事では、VBScriptを使用して特定のフォルダから、一定期間以上経過したファイルを削除する方法について詳しく説明します。
ファイルの作成日時を取得
まず、削除対象のファイルを特定するために、ファイルの作成日時を取得する必要があります。
ファイルの作成日時を取得するには、VBScript内で FileSystemObject を使用して、ファイルのプロパティからこの情報を取得します。
1.FileSystemObjectを作成します。
これを使用してファイルやフォルダにアクセスできます。
Set objFSO = CreateObject("Scripting.FileSystemObject")
2.ファイルのオブジェクトを作成します。
FileSystemObject を使用して、ファイルのオブジェクトを作成します。
これにより、ファイルのプロパティにアクセスできます。
Set objFile = objFSO.GetFile("C:\temp\log¥xxx.log")
上記のコードでは、C:\temp\log¥xxx.logに対応するファイルのオブジェクトが objFile に格納されます。
3.ファイルの作成日時を取得します。
ファイルの作成日時は DateCreated プロパティを使用して取得できます。
これを Now 関数と組み合わせて日付を比較するために使用します。
fileCreationDate = objFile.DateCreated
上記のコードでは、fileCreationDate にファイルの作成日時が格納されます。
これで、ファイルの作成日時を取得するための基本的なステップが完了しました。
以下は、これらの手順を組み合わせて、特定のフォルダ(”C:\temp\log”)内のファイルをループし、30日以上経過したファイルを削除するための準備を行います。
Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder("C:\temp\log") ' フォルダのパスを指定 For Each objFile In objFolder.Files ' 30日以上経過したファイルを削除する場合 If DateDiff("d", objFile.DateCreated, Now) > 30 Then ' ここに削除処理を記述 End If Next
ファイルの削除
ファイルの削除には、DeleteFile メソッドを使用します。
Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder("C:\temp\log") ' フォルダのパスを指定 For Each objFile In objFolder.Files ' 30日以上経過したファイルを削除する場合 If DateDiff("d", objFile.DateCreated, Now) > 30 Then objFile.Delete End If Next
このコードは、指定したフォルダ内の30日以上経過したファイルを削除します。
タスクスケジューラの設定
ファイルの自動削除を定期的に行いたい場合、Windowsのタスクスケジューラを設定します。
スクリプトを定期的に実行するには、以下の手順を行います。
1.作成したVBScriptを保存します。たとえば、”DeleteOldLogFiles.vbs” という名前で保存します。
2.タスクスケジューラを開き、新しいタスクを作成します。
3.タスクの「トリガー」を設定し、実行間隔や日付を選択します。
4.「操作」を設定し、”スクリプトの開始” を選択し、上記で保存したスクリプトファイルを指定します。
5.タスクの設定を確認し、タスクを保存します。
これにより、指定した間隔でスクリプトが実行され、古いファイルが削除されます。
まとめ
今回はVBScriptを使用して一定期間経過したファイルを削除する方法について説明しました。