使用PowerShell删除15天以上的文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我只想删除15天前在特定文件夹中创建的文件。我怎么能用PowerShell做到这一点呢?

提问于
用户回答回答于

另一种方法是从当前日期减去15天并进行比较。CreationTime相对于这一价值:

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

Get-ChildItem $root -Recurse | ? {
  -not $_.PSIsContainer -and $_.CreationTime -lt $limit
} | Remove-Item
用户回答回答于

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

$limit = (Get-Date).AddDays(-15)
$path = "C:\Some\Path"

# 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-Itemcmdlet调用即可。

扫码关注云+社区