none
powershell 移除過期檔案但保留某些資料夾 RRS feed

  • 問題

  • 各位好
    我現在要用powershell移除掉一個目錄裡面超過30天未使用的檔案及資料夾
    但是需要保留幾個子目錄及底下的檔案

    |-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

    除了A跟B資料夾外的檔案,超過30天未使用必須刪除
    我嘗試了exclude跟.Fullname -notlike都沒有成功
    請教一下各位該怎麼寫?
    謝謝

    #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

    #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

    2018年9月27日 上午 06:14

所有回覆

  • -Exclude 和-notlik 支援萬用字元但不支援array。

    所以用時,直接key你要不包含的字串即可。

    若想要用Array的方式,那就考慮用 –contains, -notcontains 或 -match, -notmatch

    相關範列可以參考 這篇

    2018年9月27日 上午 07:15
  • 最後測試用 -Exclude 'A*' , 'B*'就成功了

    感謝協助

    • 已編輯 James_CviLux 2018年9月27日 上午 08:24 已成功
    2018年9月27日 上午 07:48