如何排除目录

时间:2013-08-26 11:12:56

标签: powershell

我是PowerShell脚本编写的初学者,所以保持冷静^^

我想删除目录d:\ test上的文件我只删除了15天以上的文件 但我不想删除目录d:\ test。

中另一个目录上的文件

我的剧本

#----- 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"
            }
        }

2 个答案:

答案 0 :(得分:3)

如果您使用的是Powershell 2.0,则只能获取文件:

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

如果您使用的是Powershell 3.0,请执行以下操作:

Get-ChildItem $TargetFolder -File

我不知道你是否想要-Recurse。如果您只需要d:\test处的文件而不是子目录下的文件,请不要使用-Recurse

答案 1 :(得分:1)

每个文件都有一个属性

PSIsContainer

它表示您的对象是否是目录,您可以过滤文件集合:

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