一个强大的PowerShell脚本集合,用于自动清理QQ聊天图片和空文件夹,支持多文件夹配置和灵活的定时任务调度。
QQCleaner/
├── Config/
│ └── folders.json # 配置文件(包含清理和调度设置)
├── Scripts/
│ ├── Clean-QQImages.ps1 # 主清理脚本
│ ├── Setup-Task.ps1 # 定时任务设置脚本(支持多种创建方式)
│ ├── Manage-Config.ps1 # 配置文件管理工具
│ └── Manage-Schedule.ps1 # 调度设置管理工具
└── Logs/ # 日志目录(自动创建)
└── QQCleanup_*.log # 清理日志文件
# 1. 创建项目目录
mkdir QQCleaner
cd QQCleaner
mkdir Scripts
# 2. 将提供的脚本保存到 Scripts 文件夹中
# 3. 以管理员身份运行设置脚本
# 右键点击 PowerShell,选择"以管理员身份运行"
Set-ExecutionPolicy RemoteSigned -Force
.\Scripts\Setup-Task.ps1# 查看当前配置
.\Scripts\Manage-Config.ps1
# 添加新的清理文件夹
.\Scripts\Manage-Config.ps1 -Action add
# 编辑现有配置
.\Scripts\Manage-Config.ps1 -Action edit功能:执行图片清理和空文件夹删除,支持百万级文件处理
参数:
# 基本用法
.\Clean-QQImages.ps1
# 测试模式(不实际删除)
.\Clean-QQImages.ps1 -WhatIf
# 指定自定义配置文件
.\Clean-QQImages.ps1 -ConfigPath "D:\MyConfig.json"特性:
- ✅ 高性能处理:支持处理100万+文件和文件夹
- ✅ 智能进度显示:每5000个操作显示进度,每5分钟保活显示
- ✅ 按时间清理:按指定天数清理旧文件
- ✅ 递归空文件夹清理:深度优先删除所有空文件夹
- ✅ 过滤系统文件:跳过隐藏和系统文件(可配置)
- ✅ 详细日志记录:完整记录所有操作和错误信息
- ✅ 内存优化:定期垃圾回收,防止内存溢出
- ✅ 错误重试机制:完善的异常处理和恢复机制
功能:创建或更新Windows计划任务,支持多种创建方式
参数:
# 基本用法(从配置文件读取设置)
.\Setup-Task.ps1
# 强制覆盖现有任务
.\Setup-Task.ps1 -Force
# 指定自定义配置文件和脚本路径
.\Setup-Task.ps1 -ConfigPath "D:\MyConfig.json" -ScriptPath "D:\MyScript.ps1"特性:
- ✅ 多方式创建:自动尝试多种任务创建方法
- ✅ 权限自适应:检测管理员权限并提供备用方案
- ✅ 智能回退:PowerShell失败时自动使用schtasks命令
- ✅ 详细状态反馈:显示任务状态和下次运行时间
- ✅ 配置验证:验证调度配置的有效性
功能:管理要清理的文件夹配置
用法:
# 查看当前配置
.\Manage-Config.ps1
# 添加新文件夹
.\Manage-Config.ps1 -Action add
# 编辑现有配置
.\Manage-Config.ps1 -Action edit功能:管理定时任务的调度设置
用法:
# 查看当前调度设置
.\Manage-Schedule.ps1
# 修改调度设置
.\Manage-Schedule.ps1 -Action set
# 启用调度
.\Manage-Schedule.ps1 -Action enable
# 禁用调度
.\Manage-Schedule.ps1 -Action disable
# 测试配置有效性
.\Manage-Schedule.ps1 -Action test配置文件位于 Config/folders.json,格式如下:
{
"Folders": [
{
"Path": "D:\\QQFiles\\Group1",
"DaysOld": 30,
"Enabled": true,
"Description": "工作群聊天图片"
},
{
"Path": "D:\\QQFiles\\Group2",
"DaysOld": 60,
"Enabled": true,
"Description": "朋友群聊天图片"
}
],
"GlobalSettings": {
"LogRetentionDays": 30,
"SkipHiddenFolders": true,
"SkipSystemFolders": true
},
"ScheduleSettings": {
"Enabled": true,
"IntervalType": "Days", // Days 或 Weeks
"IntervalValue": 7, // 间隔数值
"ExecutionTime": "03:00", // 执行时间 (HH:mm)
"RandomDelayMinutes": 60 // 随机延迟分钟
}
}配置项说明:
清理设置:
Path: 要清理的文件夹路径DaysOld: 文件保留天数(超过此天数的文件将被删除)Enabled: 是否启用此文件夹的清理Description: 文件夹描述信息
全局设置:
LogRetentionDays: 日志文件保留天数SkipHiddenFolders: 是否跳过隐藏文件夹SkipSystemFolders: 是否跳过系统文件夹
调度设置:
Enabled: 是否启用定时任务IntervalType: 间隔类型(Days/周数/Weeks/周数)IntervalValue: 间隔数值ExecutionTime: 执行时间(HH:mm格式)RandomDelayMinutes: 随机延迟分钟数
# 测试运行(不实际删除)
.\Scripts\Clean-QQImages.ps1 -WhatIf
# 立即执行清理
.\Scripts\Clean-QQImages.ps1
# 清理特定路径
.\Scripts\Clean-QQImages.ps1 -ConfigPath "D:\CustomConfig.json"# 设置为每天清理
.\Scripts\Manage-Schedule.ps1 -Action set
# 选择 IntervalType: Days, IntervalValue: 1
# 设置为每周清理
.\Scripts\Manage-Schedule.ps1 -Action set
# 选择 IntervalType: Weeks, IntervalValue: 1
# 设置为每2周清理
.\Scripts\Manage-Schedule.ps1 -Action set
# 选择 IntervalType: Weeks, IntervalValue: 2
# 应用新的调度设置
.\Scripts\Setup-Task.ps1 -Force# 每2周执行一次(每周一03:00)
schtasks /Create /TN "QQ多文件夹自动清理任务" /TR "powershell -ExecutionPolicy Bypass -File D:\Scheduled\QQCleaner\Scripts\Clean-QQImages.ps1" /SC WEEKLY /MO 2 /ST 0300 /F
# 每天执行一次
schtasks /Create /TN "QQ多文件夹自动清理任务" /TR "powershell -ExecutionPolicy Bypass -File D:\Scheduled\QQCleaner\Scripts\Clean-QQImages.ps1" /SC DAILY /ST 0300 /F# 查看任务状态
Get-ScheduledTask -TaskName "QQ多文件夹自动清理任务"
# 立即运行任务
Start-ScheduledTask -TaskName "QQ多文件夹自动清理任务"
# 删除任务
Unregister-ScheduledTask -TaskName "QQ多文件夹自动清理任务" -Confirm:$false
# 使用schtasks查看
schtasks /Query /TN "QQ多文件夹自动清理任务"# 查看最新日志
Get-Content .\Logs\QQCleanup_*.log -Tail 20
# 监控实时日志
Get-Content .\Logs\QQCleanup_$(Get-Date -Format 'yyyyMMdd').log -Wait
# 清理旧日志
Get-ChildItem .\Logs\*.log | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | Remove-Item# 解决方案:以管理员身份运行
# 1. 右键点击 PowerShell
# 2. 选择"以管理员身份运行"
# 3. 重新运行脚本# 重新生成默认配置
Remove-Item .\Config\folders.json -Force
.\Scripts\Clean-QQImages.ps1 -WhatIf# 使用schtasks命令手动创建
schtasks /Create /TN "QQ多文件夹自动清理任务" /TR "powershell -ExecutionPolicy Bypass -File D:\Scheduled\QQCleaner\Scripts\Clean-QQImages.ps1" /SC WEEKLY /MO 1 /ST 0300 /F# 设置执行策略
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force- 大规模处理:经过测试支持100万+文件清理
- 内存优化:分批处理,定期垃圾回收
- 进度显示:实时进度反馈,避免长时间无响应
- 错误恢复:跳过错误文件,继续处理其他文件
- 日志记录:详细的操作日志和错误信息
- 测试优先:首次使用务必使用
-WhatIf参数测试 - 数据备份:清理前确认重要文件已备份
- 权限要求:计划任务需要管理员权限
- 日志监控:定期检查日志确认运行状态
- 配置验证:修改配置后使用测试功能验证
-
v1.2 (2024-01-01) - 任务创建增强
- 多方式任务创建(PowerShell + schtasks)
- 管理员权限检测和提示
- 更好的错误处理和回退机制
-
v1.1 (2024-01-01) - 调度系统改进
- 灵活的间隔配置(天/周)
- 完整的调度管理工具
- 配置验证和测试功能
-
v1.0 (2024-01-01) - 初始版本
- 基础文件清理功能
- 多文件夹配置支持
- 空文件夹递归删除
如果遇到问题,请按以下步骤排查:
- 检查日志:查看
Logs/QQCleanup_*.log文件 - 测试运行:使用
.\Clean-QQImages.ps1 -WhatIf测试 - 验证配置:使用
.\Manage-Schedule.ps1 -Action test测试配置 - 权限检查:确保以管理员身份运行设置脚本
对于大规模清理任务(100万+文件),建议:
- 首次运行使用测试模式
- 监控内存使用情况
- 分批次处理不同文件夹
重要提示: 使用前请务必进行测试!默认配置为每7天清理一次,请根据实际需求调整。对于生产环境,建议先在测试环境验证配置。