Introduction
Cleaning up old log files helps keep your computer tidy and saves space. Automating this task means you don't have to do it by hand.
Jump into concepts and practice - no test required
Get-ChildItem -Path <folder_path> -Filter <file_pattern> | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-<days>) } | Remove-ItemGet-ChildItem -Path C:\Logs -Filter *.log | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | Remove-ItemGet-ChildItem -Path D:\App\Logs -Filter *.txt | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Itemparam(
[string]$LogFolder = "C:\Logs",
[int]$DaysToKeep = 30
)
Write-Host "Starting log cleanup in folder: $LogFolder"
$oldLogs = Get-ChildItem -Path $LogFolder -Filter *.log | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$DaysToKeep) }
if ($oldLogs.Count -eq 0) {
Write-Host "No log files older than $DaysToKeep days found."
} else {
foreach ($log in $oldLogs) {
Write-Host "Deleting: $($log.FullName)"
Remove-Item $log.FullName
}
Write-Host "Cleanup complete. Deleted $($oldLogs.Count) files."
}C:\Logs?Get-ChildItem -Path 'C:\Logs' -Filter '*.log' | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -WhatIfGet-ChildItem -Path 'C:\Logs' -Filter '*.log' | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-15) } | Remove-ItemC:\Logs and log the deleted filenames to deleted_logs.txt. Which script correctly does this?