我只想删除特定文件夹中15天前创建的文件。我如何使用PowerShell来做这件事?
发布于 2013-10-11 19:52:19
给出的答案只会删除文件(诚然,这是本文标题中的内容),但这里有一些代码,它将首先删除所有超过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-Item
cmdlet调用即可。
如果你只想删除15天内没有更新的文件,而不是15天前创建的文件,那么你可以使用$_.LastWriteTime
而不是$_.CreationTime
。
这里显示的代码与PowerShell v2.0兼容,但我也将此代码和速度更快的PowerShell v3.0代码显示为handy reusable functions on my blog。
发布于 2016-11-15 11:37:50
只是简单(PowerShell V5)
Get-ChildItem "C:\temp" -Recurse -File | Where CreationTime -lt (Get-Date).AddDays(-15) | Remove-Item -Force
发布于 2013-07-24 09:45:41
另一种方法是从当前日期减去15天,并将CreationTime
与该值进行比较:
$root = 'C:\root\folder'
$limit = (Get-Date).AddDays(-15)
Get-ChildItem $root -Recurse | ? {
-not $_.PSIsContainer -and $_.CreationTime -lt $limit
} | Remove-Item
https://stackoverflow.com/questions/17829785
复制相似问题