使用PowerShell删除超过15天的文件

我想只删除超过15天前在特定文件夹中创建的文件。 我怎样才能使用PowerShell来做到这一点?


给定的答案只会删除文件(这确实是这篇文章的标题),但是这里有一些代码会先删除所有超过15天的文件,然后递归删除可能已经剩下的空目录背后。 我的代码也使用-Force选项来删除隐藏和只读文件。 此外,我选择了作为OP是一个新的PowerShell不使用别名和可能不明白什么gci?%等等。

$limit = (Get-Date).AddDays(-15)
$path = "C:SomePath"

# Delete files older than the $limit.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force

# Delete any empty directories left behind after deleting the old files.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { $_.PSIsContainer -and (Get-ChildItem -Path $_.FullName -Recurse -Force | Where-Object { !$_.PSIsContainer }) -eq $null } | Remove-Item -Force -Recurse

当然,如果您想要在删除文件/文件夹之前查看要删除的文件/文件夹,只需在两行末尾添加-WhatIf开关到Remove-Item cmdlet调用即可。

此处显示的代码与PowerShell v2.0兼容,但我也在我的博客上显示此代码和更快的PowerShell v3.0代码,作为方便的可重用函数。


只是简单地(PowerShell V5)

Get-ChildItem "C:temp" -Recurse -File | Where CreationTime -lt  (Get-Date).AddDays(-15)  | Remove-Item -Force

另一种方法是从当前日期减去15天,并将CreationTime与该值进行比较:

$root  = 'C:rootfolder'
$limit = (Get-Date).AddDays(-15)

Get-ChildItem $root -Recurse | ? {
  -not $_.PSIsContainer -and $_.CreationTime -lt $limit
} | Remove-Item
链接地址: http://www.djcxy.com/p/29107.html

上一篇: Delete files older than 15 days using PowerShell

下一篇: How to get an MD5 checksum in PowerShell