我有一个目录,我需要删除所有已过期30天的文件和文件夹,但将所有内容保留在子文件夹C:\TEST\A
和C:\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
答案 0 :(得分:0)
您可以链接两个Get-ChildItem
调用,第一个调用排除文件夹,第二个递归获取文件:
Get-ChildItem -Path C:\folder -Exclude A,B | Get-ChildItem -Recurse | Where-Object [...]