I have a share that is a "junk drawer" for end-users. They are able to create folders and subfolders as they see fit. I need to implement a script to delete files created more than 31 days old.
I have that started with Powershell. I need to follow up the file deletion script by deleting subfolders that are now empty. Because of the nesting of subfolders, I need to avoid deleting a subfolder that is empty of files, but has a subfolder below it that contains a file.
For example:
FILE3a is 10 days old.  FILE3 is 45 days old.C:\Junk\subfolder1a\subfolder2a\FILE3a  C:\Junk\subfolder1a\subfolder2a\subfolder3a  C:\Junk\subfolder1a\subfolder2B\FILE3b   Desired result:
FILE3b, subfolder2B & subfolder3a.  subfolder1a, subfolder2a, and FILE3a.I can recursively clean up the files.  How do I clean up the subfolders without deleting subfolder1a?  (The "Junk" folder will always remain.)
I would do this in two passes - deleting the old files first and then the empty dirs:
Get-ChildItem -recurse | Where {!$_.PSIsContainer -and ` $_.LastWriteTime -lt (get-date).AddDays(-31)} | Remove-Item -whatif  Get-ChildItem -recurse | Where {$_.PSIsContainer -and ` @(Get-ChildItem -Lit $_.Fullname -r | Where {!$_.PSIsContainer}).Length -eq 0} | Remove-Item -recurse -whatif   This type of operation demos the power of nested pipelines in PowerShell which the second set of commands demonstrates. It uses a nested pipeline to recursively determine if any directory has zero files under it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With