使用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