Re: [问题] PS移除目录过期的档案但要保留其中几个

楼主: Tabrith (血糖瑪琪朵)   2018-09-28 02:55:10
: #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}
大概是这样,有错请指正~

Links booklink

Contact Us: admin [ a t ] ucptt.com