• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 767
  • Last Modified:

powershell script for archiving files


Can someone help me with a powershell script.
I need to do a recursive research on a folder and subfolder to find files that are older that 3 years (modified date) and then move these files to an other location.
I would like to respect the "tree" (folders and subfolders) and also delete the empty folders at the end.

Thank you for your help.
1 Solution
Chris DentPowerShell DeveloperCommented:

This should do it for you.



$SourceFolder = "C:\Source"
$DestinationFolder = "C:\Destination"
# Return all files in the structure which have not been written in the last 3 years
$Files = Get-ChildItem $SourceFolder -Recurse | ?{ 
  $_.PsIsContainer -eq $False -And `
  $_.LastWriteTime -lt ([DateTime]::Now).AddYears(-3) 
} | Select-Object Name, FullName, DirectoryName, LastWriteTime
# Move the files
$Files | %{
  $Destination = ($_.DirectoryName).Replace($SourceFolder, $DestinationFolder)
  If (!(Test-Path $Destination)) { [Void]New-Item -Path $Destination -Type Directory }
  (Get-Item $_.FullName).MoveTo("$Destination\$($_.Name)")
# Remove empty folders
$FoldersToDelete = Get-ChildItem $SourceFolder -Recurse | ?{ 
  $_.PsIsContainer -eq $True -And 
  (Get-ChildItem $_.FullName).Count -eq $Null 
$FoldersToDelete | %{ Remove-Item $_.FullName }

Open in new window

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now