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