PowerShell删除lastwrite超过30个项目/文件夹,排除多个子文件夹

时间:2018-09-27 02:30:38

标签: powershell powershell-v2.0

我有一个目录,我需要删除所有已过期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

1 个答案:

答案 0 :(得分:0)

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

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