微信电脑版文件可每月1号自动清理:脚本定位FileStorage下Image/Video/File/Cache四目录,删除90天前大于10KB的文件,通过任务计划程序定时执行,并支持回收站删除或日志记录。

Windows系统里微信电脑版持续接收图片、视频、文档,这些文件默认存进C盘WeChat Files目录,时间一长就自动堆出几GB冗余内容——比如重复命名的资料(1).docx、半年没点开的群聊视频、缓存封面图。想让它每月1号凌晨自动扫一遍并移进回收站,不用每次手动点开软件。
确认微信文件路径并锁定目标子目录
打开电脑版微信 → 左下角三条横线 → 【设置】→【文件管理】→ 点击【打开文件夹】。窗口跳转后,记下地址栏完整路径,形如:C:\Users\张三\Documents\WeChat Files\wxid_abc123xyz\FileStorage。这个FileStorage就是所有媒体和缓存的根目录,后续脚本只处理它底下的Image、Video、File、Cache四个子文件夹,绝不碰Msg、Backup或其它含文字记录的目录。
注意:如果路径中包含中文用户名(如“张三”),PowerShell脚本需启用UTF-8编码,否则可能报错找不到路径。
用PowerShell写一个可定时执行的清理脚本
新建文本文档,粘贴以下代码,保存为 wechat_clean.ps1(后缀必须是.ps1):
```powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
$wechatRoot = "C:\Users\张三\Documents\WeChat Files\wxid_abc123xyz\FileStorage"
if (!(Test-Path $wechatRoot)) { exit }
$cutoffDate = (Get-Date).AddDays(-90)
Get-ChildItem "$wechatRoot\Image", "$wechatRoot\Video", "$wechatRoot\File", "$wechatRoot\Cache" -Recurse -File |
Where-Object { $_.LastWriteTime -lt $cutoffDate -and $_.Length -gt 10240 } |
ForEach-Object {
$null = Remove-Item $_.FullName -Force -ErrorAction SilentlyContinue
}
```
把代码里两处路径替换成你自己的实际路径;90代表清理90天前的文件,按需改成60或180;10240是10KB,过滤掉极小的临时碎片,避免误删日志类小文件。
这一步不能直接双击运行.ps1文件——Windows默认禁用脚本执行,必须先在PowerShell管理员窗口中运行一次 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 才能生效。
通过任务计划程序设置每月自动触发
第一步:按 Win+R 输入 taskschd.msc 回车,打开任务计划程序。
第二步:右侧面板点击【创建基本任务】→ 命名“微信月度清理”→ 下一步 → 触发器选【每月】→ 设置具体日期与时间(例如每月1日 02:00)→ 下一步。
第三步:操作选【启动程序】→ 程序或脚本填 powershell.exe → 添加参数填:-ExecutionPolicy Bypass -File "D:\Scripts\wechat_clean.ps1"(路径替换成你保存.ps1的绝对路径)→ 下一步 → 完成。
关键点:参数里必须带 -ExecutionPolicy Bypass,否则任务运行时仍受策略限制,脚本静默失败不报错。任务属性中【配置】选项卡要勾选“不管用户是否登录都要运行”,并勾选“不存储密码”则无法访问用户级路径——此时需改选“只在用户登录时运行”。
验证脚本能真正删掉旧文件
方法一:手动运行脚本前,先在FileStorage\Video里找一个修改日期早于90天的MP4文件,记下名字;运行脚本后刷新文件夹,该文件应消失。
方法二:把脚本里 Remove-Item 行替换成 Write-Host $_.FullName,再运行一次,屏幕上会逐行打印所有将被删除的文件路径——确认无误后再换回删除指令。
首次运行建议用方法二预览,避免路径写错导致删掉别的目录。脚本本身不生成日志,如需留痕,可在末尾加一句:"$(Get-Date): 清理完成" | Out-File -Append D:\Scripts\wechat_clean.log。
让清理更稳:加一层回收站保护机制
原生PowerShell的 Remove-Item 是永久删除,不可逆。要进回收站,需调用COM对象,替换脚本中最后一段为:
```powershell
ForEach-Object {
$shell = New-Object -ComObject Shell.Application
$shell.Namespace(0).ParseName($_.FullName).InvokeVerb("delete")
Start-Sleep -Milliseconds 50
}
```
这段代码会让每个文件走右键删除流程,进系统回收站而非彻底抹除。但速度变慢,且对某些只读文件可能弹窗报错——若追求稳定不中断,保留原 Remove-Item 更合适,前提是已开启系统还原并每周备份重要聊天文件。











