首页 > 解决方案 > powershell 删除除最后三个以外的所有文件夹

问题描述

我在 Windows 机器上有一个文件夹 D:/Tests,它存储每天创建的文件夹。我需要在 linux 机器上运行 ansible 的代码,它将删除除最后三个创建的文件夹之外的所有文件夹。我已经在stackoverflow中挖掘了数十篇文章,但是大多数这些问题都是使用bat文件解决的。对我来说,这个选项不合适。根据我的发现,这与我需要的最相似:

Get-Childitem D:\Downloads_D -recurse | where {($_.creationtime -gt $del_date) -and ($_.name -notlike "*dump*" -and $_.name -notlike "*perform*")} | remove-item 

但是我对 Powershell 的了解不足以对其进行编辑,以便它执行我的任务。有没有办法使用 ansible 模块、Windows 命令行命令或 Powershell 命令来实现我的目标?

标签: windowspowershellcmdansible

解决方案


对于 powershell,您可以执行以下操作:

Get-ChildItem -Path D:\Downloads_D -Directory | Sort-Object -Property CreationTime | Select-Object -SkipLast 3 | Remove-Item

解释

  • -Directory使用from过滤目录Get-ChildItem
  • CreationTime使用按属性对目录进行排序Sort-Object
  • Select-Object使用和跳过最后 3 个目录-SkipLast 3。这可确保不删除最近创建的 3 个目录。
  • 管道Remove-Item删除目录

推荐阅读