powershell script for archiving files

Posted on 2009-04-15
Last Modified: 2012-06-27

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.
Question by:virginie8
1 Comment
LVL 70

Accepted Solution

Chris Dent earned 500 total points
ID: 24157115

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


Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Can I legally transfer my OEM version of Windows to another PC?  (AKA - Can I put a new systemboard in my OEM PC?) Few of us are both IT and legal experts but we all have our own views of Microsoft's licensing rules and how they apply.  There are…
Learn about cloud computing and its benefits for small business owners.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now