powershell script for archiving files

Hello,

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.
virginie8Asked:
Who is Participating?
 
Chris DentConnect With a Mentor PowerShell DeveloperCommented:

This should do it for you.

HTH

Chris

$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

0
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.

All Courses

From novice to tech pro — start learning today.