PoshCode Logo PowerShell Code Repository

PurgeFiles script. (modification of post by view diff)
embed code: <script type="text/javascript" src="http://PoshCode.org/embed/1620"></script>download | new post

Recursively remove files with given extension and maximum age from a given path.

  1. <#
  2. .SYNOPSIS
  3.         PurgeFiles - recursively remove files with given extension and maximum age from a given path.
  4. .DESCRIPTION
  5.         Read the synopsis
  6.         Example
  7.                 PurgeFiles.psq -path C:\temp -ext .tmp -max 24
  8. .EXAMPLE
  9.         PurgeFiles.psq -path C:\temp -ext .tmp -max 24
  10. #>
  11. # HISTORY
  12. # 2010/01/29
  13. # rluiten       Created
  14.  
  15. param(
  16.          [Parameter(Mandatory=$true)][string] $path
  17.         ,[Parameter(Mandatory=$true)][string] $extension
  18.         ,[Parameter(Mandatory=$true)][int] $maxHours
  19.         ,[switch] $deleteMode = $false
  20.         ,[switch] $listMode = $false
  21. )
  22.  
  23. function delete-file([string]$path, [string]$extension, [datetime]$oldestAllowed, [bool] $deleteMode, [bool] $listMode)
  24. {
  25.         $filesToRemove = Get-Childitem $path -recurse |
  26.                 ?{      !$_.PSIsContainer -and
  27.                         ($_.LastWriteTime -lt $oldestAllowed) -and
  28.                         ($_.Extension -eq $extension)
  29.                 }
  30.         if ($listMode -and $filesToRemove) {
  31.                 $filesToRemove | %{write-host "FILE: $($_.LastWriteTime) ""$($_.FullName)""`r`n"}
  32.         }
  33.         if ($deleteMode -and $filesToRemove) {
  34.                 write-host "Removing Files...`r`n"
  35.                 $filesToRemove | remove-item -force
  36.         }
  37. }
  38.  
  39. $oldestAllowed = (get-date).AddHours(-$maxHours)
  40.  
  41. if (-not $deleteMode) {
  42.         write-host "Running in trial mode, no files will be deleted.`r`n"
  43. }
  44. delete-file $path $extension $oldestAllowed $deleteMode $listMode

Submit a correction or amendment below (
click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:


Remember me