Stranger
Stranger

Reputation: 11

How to exlude a directory

i'm a beginner on powershell scripting so keep cool ^^

I would like to delete file on directory d:\test I delete only file more 15 days but I'don't want to delete files on another directory in directory d:\test.

My script

#----- define parameters -----#
#----- get current date ----#
$Now = Get-Date
#----- define amount of days ----#
$Days = "15"
#----- define folder where files are located ----#
$TargetFolder = "d:\test"
#----- define extension ----#
$Extension = "*.bak"
#----- define LastWriteTime parameter based on $Days ---#
$LastWrite = $Now.AddDays(-$Days)
#----- get files based on lastwrite filter and specified folder ---#
$Nomatch = "d:\test\ZZ - Archives","d:\test\ZZ - Cloture Paye"

$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where {$_.LastWriteTime -le "$LastWrite"} | 
Where-Object {$_.FullName -notmatch "$Nomatch"}

foreach ($File in $Files)
        {
        if ($File -ne $NULL)
            {
            write-host "Deleting File $File" -ForegroundColor "DarkRed"
            Remove-Item $File.FullName | out-null
            }
        else
            {
            Write-Host "No more files to delete!" -foregroundcolor "Green"
            }
        }

Upvotes: 1

Views: 515

Answers (2)

manojlds
manojlds

Reputation: 301397

If you are on Powershell 2.0, to get only files:

Get-ChildItem $TargetFolder | Where-Object { ! $_.PSIsContainer }

If you are on Powershell 3.0, do:

Get-ChildItem $TargetFolder -File

I don't know if you want -Recurse. If you want only files at d:\test and not the files under child directories too, don't use -Recurse.

Upvotes: 3

Rafal
Rafal

Reputation: 12629

There is a property on each file

PSIsContainer

It indicates if your object is a directory and you can filter your files collection:

$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse |
where { !$_.PSIsContainer } | ...

Upvotes: 1

Related Questions