Powershellで数日前のファイル名のログデータを削除する方法!

powershell

PowerShellを使って、古いログファイルを削除したいことはありませんか?

けど、そんな中で悩むことは、

    • 指定した日数より古いファイルを削除する方法がわからない
    • 特定の拡張子(例: .log)のファイルだけを削除したい
    • 指定したフォルダ内のサブフォルダを含めて削除したい

ですよね。

今回はそんなお悩みを解決する

  • PowerShellを使った基本的なログ削除方法
  • 特定の条件に基づいたファイル削除

についてまとめます!

数日前のファイルを削除する完成イメージ

PowerShellを使うことで、以下のようなことが可能になります。

POINT
  • 指定したフォルダ内のX日以上前のログファイルを削除
  • .log ファイルのみを削除
  • サブフォルダ内も含めて削除
  • 確認メッセージなしで即時削除
それでは、具体的な方法を解説していきます。

PowerShellで古いログファイルを削除する方法

基本的な削除コマンド

特定のフォルダ内で、7日以上前のログファイルを削除する方法です。

構文:

Get-ChildItem -Path "C:\Logs" -Filter "*.log" | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item

解説:

  • Get-ChildItem
    指定フォルダ内のファイルを取得します。
  • -Path "C:\Logs"
    対象フォルダを指定します。
  • -Filter "*.log"
    拡張子 .log のファイルのみ対象にします。
  • Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) }
    7日以上前のファイルを対象にします。
  • Remove-Item
    該当ファイルを削除します。

確認なしで削除する

通常、Remove-Item は削除時に確認が求められることがあります。

確認なしで即削除するには -Forceを追加

Get-ChildItem -Path "C:\Logs" -Filter "*.log" | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Force

サブフォルダ内のファイルも削除

サブフォルダも含めて検索し、ログファイルを削除する場合は -Recurse を追加します。

Get-ChildItem -Path "C:\Logs" -Filter "*.log" -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Force

ログ削除処理をスケジュール実行する

定期的に古いログを削除したい場合は、タスクスケジューラで実行できます。

  1. PowerShellスクリプトを作成(例: C:\Scripts\DeleteLogs.ps1
  2. 以下の内容を記述
Get-ChildItem -Path "C:\Logs" -Filter "*.log" -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Force
  1. Windowsタスクスケジューラで powershell.exe -File C:\Scripts\DeleteLogs.ps1 を登録
  2. 毎日自動で実行されるように設定

さいごに

いかがでしょうか。

今回は、

  • PowerShellでX日以上前のログファイルを削除する方法
  • 確認なしで削除するオプション
  • サブフォルダも含めて削除する方法
  • タスクスケジューラで自動化する方法

についてまとめました。

PowerShellを活用することで、ログ管理を効率化し、ストレージの無駄を防ぐことができます。ぜひ試してみてください!



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA ImageChange Image