Re: [問題] PS移除目錄過期的檔案但要保留其中幾個

看板Windows作者 (血糖瑪琪朵)時間7年前 (2018/09/28 02:55), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
: #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://www.ptt.cc/bbs/Windows/M.1538074515.A.271.html
文章代碼(AID): #1RhIUJ9n (Windows)
文章代碼(AID): #1RhIUJ9n (Windows)