使用 PowerShell 刪除早於 X 天的檔案

Rohan Timalsina 2022年5月16日
使用 PowerShell 刪除早於 X 天的檔案

PowerShell 支援處理系統中的不同檔案操作。你可以在 PowerShell 中執行各種檔案任務,例如建立複製移動重新命名編輯刪除檢視檔案。

許多檔案在系統中長時間未使用。某些檔案可能不再需要,並且需要在某些天后刪除。

你必須手動刪除檔案,檢查從檔案資源管理器建立的日期。當有很多檔案要刪除時,可能會花費你很多時間。

相反,你可以使用 PowerShell 命令來自動執行檔案刪除任務,從而節省大量時間。

本教程將教你使用 PowerShell 刪除超過 X 天的檔案。

使用 Remove-Item Cmdlet 使用 PowerShell 刪除超過 X 天的檔案

Remove-Item cmdlet 從指定位置刪除一個或多個專案。多個供應商支援它。

你可以使用此 cmdlet 刪除不同型別的專案,包括檔案、資料夾、登錄檔項、變數、別名和函式。它不返回任何輸出。

例如,我們有一個檔案 C:\New\test.txt

Get-Item "C:\New\test.txt"

輸出:

Directory: C:\New


Mode                 LastWriteTime         Length Name                                                                                                                                                      
----                 -------------         ------ ----                                                                                                                                                      
-a----          2/1/2022  11:39 AM             80 test.txt 

現在,我們將使用 Remove-Item 刪除它。

Remove-Item "C:\New\test.txt"
Get-Item "C:\New\test.txt"

輸出:

如你所見,由於檔案被刪除,因此找不到檔案路徑。

Get-Item : Cannot find path 'C:\New\test.txt' because it does not exist.
At line:1 char:1
+ Get-Item C:\New\test.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\New\test.txt:String) [Get-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemCommand

你不能直接通過管道傳遞此 cmdlet 的路徑。但是,你可以通過管道傳輸包含路徑的字串。

現在,讓我們看看如何使用 Remove-Item 刪除超過 X 天的檔案。

在這裡,我們有一個目錄 C:\test_folder1,我們將向你展示如何刪除該目錄中所有早於 X 天的檔案。

以下命令獲取 C:\test_folder1 目錄中的所有檔案。

Get-ChildItem "C:\test_folder1" -File

上面的命令輸出通過管道傳送到下面的命令,該命令按從當前日期開始少於 X 天的建立時間過濾檔案。

Where CreationTime -lt (Get-Date).AddDays(-15)

之後,它通過管道傳送到要刪除的 Remove-Item cmdlet。

刪除早於 X 天的檔案的最終程式碼應如下所示:

Get-ChildItem "C:\test_folder1" | Where CreationTime -lt (Get-Date).AddDays(-15) | Remove-Item

你還可以使用檔案的 LastWriteTime 刪除上次寫入時間早 X 天的檔案。

Get-ChildItem "C:\test_folder1" | Where LastWriteTime -lt (Get-Date).AddDays(-15) | Remove-Item 

如果要刪除目錄中的所有檔案,包括子目錄,則必須使用 -Recurse 引數。

Get-ChildItem "C:\test_folder1" -Recurse | Where LastWriteTime -lt (Get-Date).AddDays(-15) | Remove-Item

-Force 引數允許你刪除隱藏或只讀檔案。

Get-ChildItem "C:\test_folder1" | Where CreationTime -lt (Get-Date).AddDays(-15) | Remove-Item -Force

你可以使用 Get-ChildItem cmdlet 在檔案資源管理器或 PowerShell 控制檯中驗證已刪除的檔案。

Get-ChildItem "C:\test_folder1" -Recurse

輸出:

超過 15 天的所有檔案都將被刪除。

    Directory: C:\test_folder1


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2/23/2022  11:11 PM                New folder
-a----         2/23/2022  10:29 PM              0 books.txt
-a----         2/23/2022  10:29 PM              0 hello.txt


    Directory: C:\test_folder1\New folder


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2/23/2022  10:26 PM              0 cars.txt

使用 PowerShell cmdlet,你可以輕鬆地在指定目錄中查詢和刪除超過 x 天的檔案。

作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

相關文章 - PowerShell File