作者Tabrith (血糖玛琪朵)
看板Windows
标题Re: [问题] PS移除目录过期的档案但要保留其中几个
时间Fri Sep 28 02:55:10 2018
: #notlike
: $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
-notlike 记得是不收 array,
这段如果把 $exfolder 改成 string:
$exfolder='C:\TEST\A*'
FullName -notlike 的效果就会出来,但只能筛掉 A 资料夹。
: #exclude
: $before=(Get-Date).AddDays(-30)
: $exfolder=('C:\TEST\A*' , 'C:\TEST\B*' )
: Get-ChildItem -path 'C:\TEST' -Recurse -Exclude $exfolder
: Where-Object { $_.LastWriteTime -lt $before } |
: Remove-Item -force -Recurse
这段把 $exfolder 改成
$exfolder=('A*','B*')
就能得到你要的结果,这应该是比较好的做法。
另外,如果你觉得日後这些规则会经常做调整的话,那还是用 regex 来控制比较方便,
(只是比较没实践到 Filter Left Format Right 的精神):
$regex = 'c:\\test\\(A|B)'
Get-ChildItem -Path 'C:\TEST' -Recurse | Where-Object{$_.FullName -notmatch
$regex}
大概是这样,有错请指正~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 69.38.228.57
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Windows/M.1538074515.A.271.html