首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用 WorkBuddy 写个 forfiles 清理脚本,一键删掉 N 天前的旧文件(#WorkBuddy# 实操)

用 WorkBuddy 写个 forfiles 清理脚本,一键删掉 N 天前的旧文件(#WorkBuddy# 实操)

原创
作者头像
用户12687449
修改2026-08-26 12:32:23
修改2026-08-26 12:32:23
1960
举报

1. 背景:下载目录堆满了,想自动清理

下载目录堆了上千个临时文件、日志目录一个月涨了几个 G、网盘同步盘里全是重复的旧备份——手动删太累,装第三方工具又怕捆绑。

想写个定时清理脚本,搜了一圈发现 Windows 自带的 forfiles 就能干。但参数记不住,语法容易写错。我直接在 WorkBuddy 里描述需求:

"写一个 forfiles 命令,删除 D:\temp 下 30 天前的文件,要求先预览再执行,并解释每个参数。"

WorkBuddy 直接给出了完整命令、参数对照表,还提醒我"先用 echo 预览,确认无误再换成 del 正式执行"——这个提醒很关键,避免了误删。

下面把这份完整的脚本和避坑点分享出来。

2. forfiles 是什么

forfiles 是 Windows 自带的命令行工具(Windows 7 及以上都有),作用是:选择一批文件,对每个文件执行指定命令。配合日期筛选,就是"删除 N 天前的旧文件"的官方解决方案。无需安装、无广告、一条命令解决。

3. 核心语法

代码语言:bash
复制
forfiles /p 路径 /s /m 通配符 /d 天数 /c "命令"

参数

含义

/p

起始路径,默认当前目录

/s

递归遍历子目录

/m

文件名通配符,如 *.log*.*

/d -30

筛选30 天前修改的文件(- 表示早于,+ 表示晚于)

/c

对每个文件执行的命令,内部可用 @file 等变量

命令里常用的变量:

  • @file 文件名(含扩展名)
  • @fname 文件名(不含扩展名)
  • @ext 扩展名
  • @fsize 文件大小(字节)
  • @fdate 最后修改日期

4. 场景一:删除 30 天前的临时文件

代码语言:bash
复制
forfiles /p "C:\Users\用户名\AppData\Local\Temp" /s /m *.* /d -30 /c "cmd /c del @file"

逐行拆解:进入 Temp 目录 → 递归所有子目录 → 匹配所有文件 → 筛选 30 天前修改的 → 逐个删除。

5. 场景二:清理 7 天前的日志文件(只删 log,不碰其他)

代码语言:bash
复制
forfiles /p "D:\logs" /s /m *.log /d -7 /c "cmd /c del @file"

/m *.log 把范围锁死在日志文件上,其他格式的文件完全不受影响。

6. 场景三:先预览,不真删(最重要!)

删错不可逆,所以先跑一遍预览再动手。把 del 换成 echo,只列出会被处理哪些文件:

代码语言:bash
复制
forfiles /p "D:\temp" /s /m *.* /d -30 /c "cmd /c echo @file 上次修改: @fdate 大小: @fsize 字节"

确认列表没问题,再把 echo 换成 del 正式执行。

7. 3 个避坑点

  1. /d -30 的边界:筛选的是"修改时间早于 30 天前"的文件,当天修改的不会中招。想更保险可以先跑场景三预览。
  2. 路径带空格:/p 的路径必须用双引号包起来,否则报错。
  3. cmd /c 不能省:forfiles 内部执行命令需要显式调用 cmd /c,直接写 del @file 会不生效。

8. 进阶:配合计划任务定时清理

把上面的命令存成 cleanup.bat,再用 Windows 任务计划程序设置每天凌晨自动运行一次,下载目录就永远保持清爽,不用再手动管。

代码语言:bash
复制
@echo off
forfiles /p "C:\Users\用户名\Downloads" /s /m *.* /d -30 /c "cmd /c del @file"

9. 总结

一句话总结:forfiles 是 Windows 隐藏的"文件清理神器",一条命令 + 计划任务,就能实现旧文件自动清理。这次从"描述需求 → WorkBuddy 生成脚本 → 预览确认 → 定时执行"全流程,几分钟就搞定了。下次系统盘又满了,先想想它。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 1. 背景:下载目录堆满了,想自动清理
  • 2. forfiles 是什么
  • 3. 核心语法
  • 4. 场景一:删除 30 天前的临时文件
  • 5. 场景二:清理 7 天前的日志文件(只删 log,不碰其他)
  • 6. 场景三:先预览,不真删(最重要!)
  • 7. 3 个避坑点
  • 8. 进阶:配合计划任务定时清理
  • 9. 总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档