Powershell脚本,用于删除名称中包含特定单词的目录中超过一天的所有文件

时间:2015-11-12 21:46:09

标签: powershell

我需要一个脚本来搜索根目录(例如C:\ inetpup \ wwwroot \ Listings)并查找所有具有单词" ImageCache"的子目录。在目录名称(例如114WestImageCache,214OakImageCache等)中,然后删除里面的所有文件那些超过30天的目录。到目前为止我最接近的是:

dir C:\inetpup\wwwroot\Listings\ | where {$_.name -ne 'ImageCache'}| Remove-Item -Recurse -force

但是除了一个名为" ImageCache"的目录外,它还会删除所有内容(无论日期如何)。我想把目录单独留下,而不是#34; ImageCache"在他们的名字中,只删除里面的文件超过30天的ImageCache目录。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

以下脚本将为您完成。

Get-ChildItem -Path "C:\inetpub\wwwroot\Listings" -Recurse -Force | ? { $_.DirectoryName -like "*ImageCache*" -and $_.CreationTime -lt (Get-Date).AddDays(-1)} | % { $_.Delete() }

?子句检查DirectoryName对包含您要查找的字符串的任何内容。这也将在ImageCache目录的子目录中命中文件,希望你喜欢什么。它还检查CreationTime小于当前日期减去一天 - 也就是说,超过一天。 %然后删除所有匹配项 - 如果要先测试它,请删除它。