首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PowerShell删除超过15天的文件

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

Stack Overflow用户
提问于 2013-07-24 17:14:26
回答 10查看 428K关注 0票数 210

我只想删除特定文件夹中15天前创建的文件。我如何使用PowerShell来做这件事?

EN

回答 10

Stack Overflow用户

发布于 2013-10-12 03:52:19

给出的答案只会删除文件(诚然,这是本文标题中的内容),但这里有一些代码,它将首先删除所有超过15天的文件,然后递归删除可能已经留下的任何空目录。我的代码还使用-Force选项来删除隐藏和只读文件。此外,我选择不使用别名,因为OP对于PowerShell来说是新的,并且可能不理解gci?%等是什么。

代码语言:javascript
复制
$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

票数 352
EN

Stack Overflow用户

发布于 2016-11-15 19:37:50

只是简单(PowerShell V5)

代码语言:javascript
复制
Get-ChildItem "C:\temp" -Recurse -File | Where CreationTime -lt  (Get-Date).AddDays(-15)  | Remove-Item -Force
票数 74
EN

Stack Overflow用户

发布于 2013-07-24 17:45:41

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

代码语言:javascript
复制
$root  = 'C:\root\folder'
$limit = (Get-Date).AddDays(-15)

Get-ChildItem $root -Recurse | ? {
  -not $_.PSIsContainer -and $_.CreationTime -lt $limit
} | Remove-Item
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17829785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档