首页 > 解决方案 > PowerShell删除lastwrite超过30个项目/文件夹排除多个子文件夹

问题描述

我有一个目录,我需要删除所有过期 30 天的文件和文件夹,但保留子文件夹中的所有内容C:\TEST\AC:\TEST\B

这是文件夹结构:

|-C:\TEST
 \-C:\TEST\A
 \-C:\TEST\A\A1
  \-C:\TEST\A\A2.txt
   \-C:\TEST\B
 \-C:\TEST\B\B1
  \-C:\TEST\B\B2.txt
   \-C:\TEST\C
 \-C:\TEST\C\C1
  \-C:\TEST\C\C2.txt
     \-C:\TEST\D.doc
     \-C:\TEST\E.txt

这就是我现在所拥有的,我尝试过“排除”和“不喜欢”,但都不起作用:

$before=(Get-Date).AddDays(-30)
$exfolder=('C:\TEST\A*' , 'C:\TEST\B*') 

Get-ChildItem -path 'C:\TEST' -Recurse |
    Where-Object {($_.LastWriteTime -lt $before ) -and ( $_.FullName -notlike $exfolder)} | 
    Remove-Item -force -Recurse

Get-ChildItem -path 'C:\TEST' -Recurse -Exclude $exfolder |
    Where-Object { $_.LastWriteTime -lt $before } |
    Remove-Item -force -Recurse

标签: powershellpowershell-2.0

解决方案


您可以链接两个Get-ChildItem调用,第一个用于排除文件夹,第二个用于递归获取文件:

Get-ChildItem -Path C:\folder -Exclude A,B | Get-ChildItem -Recurse | Where-Object [...]

推荐阅读