一个只读的 Windows 命令行工具:递归扫描目录,找出大文件或很久没修改的旧文件,帮助你决定哪些文件可以清理。
- 纯 C#,单文件源码,用系统自带
csc.exe编译,无需安装任何 SDK - 产出原生
dirscan.exe(约 20 KB),无外部依赖 - 只读扫描,不会修改或删除任何文件
- 支持按文件类型(扩展名)汇总统计、排除目录、限制扫描深度
双击运行 build.cmd,或手动执行:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /nologo /target:exe /out:dirscan.exe Program.cs(32 位 Windows 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe)
dirscan [目录] [选项]
| 选项 | 说明 |
|---|---|
-t, --top N |
只显示前 N 条结果(默认 20) |
-m, --min-size SIZE |
只显示不小于 SIZE 的文件,如 500KB、100MB、2GB |
-o, --older-than N |
只显示修改时间早于 N 天的文件 |
-s, --sort size|time |
size 从大到小(默认),time 从旧到新 |
--name PATTERN |
文件名通配符,如 *.log、backup_?.zip |
-d, --depth N |
只扫描到第 N 层子目录(0=只扫根目录里的文件) |
-x, --exclude PATTERN |
排除匹配的目录(可多次使用),如 node_modules、*\temp |
--summary |
在结果后按扩展名统计文件数和总大小(只统计命中当前过滤条件的文件) |
--csv FILE |
把命中结果同时导出为 CSV(UTF-8 BOM,Excel 可直接打开) |
-h, --help |
显示帮助 |
rem 找出 D 盘数据目录里超过 100MB 的最大 10 个文件
dirscan D:\data -m 100MB -t 10
rem 找出 90 天没动过的旧文件,最旧的排前面
dirscan D:\data -o 90 -s time
rem 只看日志文件,并导出 CSV
dirscan . --name *.log --csv result.csv
rem 排除 node_modules 和 temp 目录,只扫 3 层
dirscan D:\project -m 50MB --exclude node_modules --exclude *\temp -d 3
rem 按文件类型汇总,看看哪类文件最占空间
dirscan D:\data --summarydirscan/
├── Program.cs # 全部源码(单文件)
├── build.cmd # 一键重新编译
├── dirscan.exe # 已编译好的程序
├── README.md
└── testdata/ # 测试用样例目录
- 手动递归遍历目录,逐目录 try/catch:遇到无权限目录自动跳过并计数,不会整个扫描失败
- 自动跳过符号链接 / junction,避免目录循环
--exclude支持目录名(如logs)、相对路径(如testdata\logs)或通配符(如*\temp),可多次指定--depth按子目录层数计算:0只看根目录里的文件,1含第一层子目录,依此类推--summary统计的是命中当前过滤条件的文件,配合-m、-o、--name使用更灵活- 支持
--top=N和--top N两种参数写法 - 扫描是只读的;后续如需“移动到回收站/删除”,可以在此基础上加
--action选项