Azide

文章 分类
11 2

站点介绍

摸鱼!都可以摸

下载文件夹自动清理

Azote 2023-12-24 1329 0条评论 文章编程 脚本自动清理powershell

首页 / 正文

以前一直以为 Windows 会自动清理下载文件夹里的过期文件,但发现并不会(可恶)
所以就自己写了一个清理脚本,挂到任务计划程序里了。
选择每天中午自动运行脚本

auto_clear.ps1

# 配置
$deleteAge = 60 # Days
$deletePaths = @("E:\Azide\Download","F:\TencentQQ\File")

# 统计用变量
$totalCount = 0
$totalSize = 0 # MB

# 获取当前日期
$currentDate = Get-Date

# 获取 Download 文件夹中的所有文件或者文件夹
$items = Get-ChildItem -Path $deletePaths

# 遍历所有文件和文件夹
foreach ($item in $items) {
    # 计算文件或文件夹的最后修改日期与当前日期的差值
    $age = $currentDate - $item.LastWriteTime

    # 如果差值大于 30 天,打印文件或文件夹的路径, 并删除
    if ($age.TotalDays -gt $deleteAge) {
        Write-Output "Will delete: $($item.FullName), Age: $($age.TotalDays)"
        $totalCount++
        $totalSize += $item.Length / 1MB
        Remove-Item -LiteralPath $($item.FullName) -Recurse -Force
    }
}

# 打印统计信息
Write-Output "Deleted $totalCount / $($items.Count) items"
Write-Output "Total size: $totalSize MB"

接受命令行参数

可以改成从脚本外接受参数来指定$deleteAge$deletePaths

./auto_clear.ps1 -Paths "E:\Azide\Download","F:\TencentQQ\File" -Age 60

只需要在原脚本开头加上接受参数的声明,并将参数传给$deleteAge$deletePaths即可

# 获取命令行参数
param(
    [string]$Paths = @("E:\Azide\Download","F:\TencentQQ\File"),
    [int]$Age = 60 # Days
)
# 配置
$deleteAge = $Age
$deletePaths = $Paths

# ...

直接声明接收的参数为$deleteAge$deletePaths,或者修改变量名$deleteAge, $deletePaths$Age, $Paths也不是不行,这样就不用多一步赋值了

-- 到底了 --

日历

2025年04月

  12345
6789101112
13141516171819
20212223242526
27282930   

友情链接

文章目录