mipnix
mipnix

Reputation: 211

What is wrong with my script? Deletes all files -- Powershell

I want to delete files recursively, while keeping the seven most recent ones. The following script deletes all files, even though I specify the skip parameter.

$files = gci -path f:\inbox\test -recurse | where {!$_.PsIsContainer}
foreach ($file in $files) {sort creationtime -desc | select -skip 7 | remove-item -path $file.FullName -force}

This script doesn't do a damn thing:

gci -path f:\inbox\test -recurse | where {!$_.PsIsContainer} | foreach-object {sort creationtime -desc | select -skip 7 | remove-item -force }

Upvotes: 0

Views: 46

Answers (1)

CB.
CB.

Reputation: 60918

try this

$files = gci -path f:\inbox\test -recurse | where {!$_.PsIsContainer} | sort creationtime -desc | select -skip 7 

foreach ($file in $files) {remove-item -path $file.FullName -force}

or more simply

gci -path f:\inbox\test -recurse | where {!$_.PsIsContainer} | sort creationtime -desc |
select -skip 7 | remove-item -force

Upvotes: 2

Related Questions