WinDirStat 2.9.3:从目录扫描到可复查的占用报表

WinDirStat 2.9.3:从目录扫描到可复查的占用报表

开发机的磁盘问题常有两种表现:构建目录突然膨胀,或者项目已经移走,系统显示的可用空间却没有增加多少。只看资源管理器中的文件大小,很难同时回答"哪个目录增长了"和"这些文件实际占了多少磁盘"。WinDirStat 可以把目录树、文件类型和可视化放在同一份扫描结果中,再把结果保存下来,便于下一次对照。

本文以官方 v2.9.3 发行版和项目文档为依据,介绍怎样建立一次范围明确、口径一致的扫描,以及报表导出时容易忽略的限制。下列命令是文档用法示例,执行路径需要按自己的环境填写。

先固定范围和统计口径

排查单个项目时,先扫描工作目录,不必一开始就扫整块系统盘。在启动时的 Select Drives 中选择 Individual Folders,可以加入一个或多个文件夹。构建输出、依赖目录、日志目录分开放置的项目,可以把这些目录一起纳入;如果仅选择仓库根目录,位于别处的缓存不会进入这份统计。

应在记录中写清扫描路径、时间和大小口径。View 菜单提供 Use Physical Size 和 Use Logical Size:逻辑大小描述文件内容长度,物理大小更接近实际分配的空间。稀疏文件、压缩文件和分配单元都会使两个数字不同。分析磁盘还剩多少空间时,物理大小通常更有参考价值;研究产物内容规模时,逻辑大小更直观。比较前后结果时不要临时换口径。

硬链接也需要留意。多个路径可能指向同一份数据,按路径简单累加会高估真实占用。WinDirStat 有相应处理,但由此得出的数字仍然要结合扫描范围理解:只选部分目录时,结果并不是整个卷的账本。测试环境、生产数据目录和个人资料最好分别记录,避免把性质不同的数据混进同一个清理判断。

用列表定位,再用图验证分布

图1:结果窗口同时显示目录、文件类型和 Treemap。Physical Size 与 Logical Size 是不同口径;图中整盘行分别显示 9.63 GiB 和 19.65 GiB。

扫描完成后,可以从 All Files 的排序入手,逐层展开最大的目录;Largest Files 更适合直接找单个大文件。两者解决的问题不同:大量小日志可能让某个目录很大,却不会出现在单文件排行榜的最前面。按扩展名汇总则有助于发现视频、压缩包或某一类产物是否占了主要比例。

树状图中的矩形代表文件,面积反映当前大小口径,颜色对应文件类型,矩形的嵌套体现目录关系。点击醒目的区域,再回到列表核对完整路径,可以避免只凭颜色判断文件用途。同一种扩展名可能分别出现在开发缓存和个人归档中,颜色不能区分它们是否应该保留。

需要找特定对象时,可用 Ctrl+F 搜索。View 中还可切换 sunburst 或 flame graph,帮助从其他角度读目录层级。换图形不会补齐扫描时未读取到的文件,也不会改变一份快照的时间。先确认路径,再选适合自己的视图,比反复猜哪块颜色代表缓存更有效。

图2:展开 GoogleUpdater 的 crx_cache 后,可看到选中文件的物理大小为 498.41 MiB。记录完整路径与大小口径,才能在下一次扫描中对照同一对象。

报表导出:把一次判断留成快照

交互界面通过 File 下的 Save Results To CSV/JSON 保存扫描结果。导出文件适合记录某个时间点的目录状态,便于与后续扫描人工对照;它不会跟随磁盘变化自动更新。共享报表之前,应检查里面的路径和文件名是否包含项目、客户或个人信息。

命令行的 /SaveTo 可以直接写出报表并退出,不打开主窗口。官方语法是先给输出路径,再给扫描路径。下面用 PowerShell 显式等待进程结束,避免命令启动后就立即读取尚未写完的文件:

powershell 复制代码
# 先创建 C:\Reports,并把程序路径替换为实际位置
$scanArguments = '/SaveTo "C:\Reports\scan.json" "C:\Data Folder"'
$scanProcess = Start-Process 'C:\Tools\WinDirStat.exe' `
    -ArgumentList $scanArguments -WindowStyle Hidden -Wait -PassThru
$scanProcess.ExitCode

这里的目录只是示例。输出目录需要预先存在;程序路径和包含空格的参数也应检查引号。官方文档指出,/SaveTo 模式关闭重复检测。因此这份占用报表不能兼作完整查重结果。需要重复组报表时使用 /SaveDupesTo,权限报告另有 /SavePermsTo,应根据目的选择命令。

退出码为零说明报表写入成功,并不保证所有文件都能访问。读取报表时还应保留导出的结构:CSV 表头和 JSON 字段名称会受界面语言影响,不能先换了语言,再假定字段名与旧脚本一致。准备自动比较时,先保存样本并确认字段,而不是直接拿网上的解析代码套用。

重开结果与持续观察的边界

/LoadFrom 用于重开已保存的扫描树。它适合查看旧结果,但旧快照不等于当前磁盘。重复组或权限报表也不能因为同样是 CSV、JSON,就当成可重新加载的扫描树。管理多份结果时,用时间、范围和口径命名,能减少拿错报表的问题。

File Watcher 用来观察文件变化事件。它记录到新增或修改,并不代表所有统计总量已经同步刷新。项目重新构建、移动大文件或删除缓存之后,仍需刷新相应结果,再评估空间变化。如果希望对照两次构建,最好在构建结束且写入趋于稳定之后分别扫描,避免把扫描期间持续增长的日志当作固定值。

整盘统计中的 Unknown 也不是一个能直接删除的文件夹。它代表 Windows 报告的已用空间与已经统计的文件之间的差额,可能涉及文件系统元数据、权限、排除条件、还原点或扫描期间的变化。出现差额时,先检查这些边界,再决定是否需要扩大范围或调整权限。

版本选择与结果复核

普通 Intel、AMD 的 64 位 Windows 设备通常选择 x64 MSI,Windows on ARM 选择 ARM64,32 位 Windows 对应 x86。官方也提供 MSIX、组合包和便携压缩包;便携包解压后仍需选择对应架构的程序。DebugSymbols 是调试符号,Hashes 是校验资料,二者不是普通用户的安装入口。

2.9.3 的官方更新涉及 NTFS 直接卷扫描、File Watcher 内存使用、枚举与过滤分配,并修复横向滚动列对齐。它们说明版本变化的方向,不能据此填写某台机器的加速百分比。本地 NTFS 整盘需要相应权限时,可使用 File > Run Elevated;扫描更快也不代表操作系统目录可以随意删除。

对开发目录而言,最后一步应是到资源管理器确认对象,再通过项目或应用自己的流程处理。数据库文件、虚拟机磁盘和同步目录即使很大,也可能正在被使用。保留有用结果、处理已经确认的对象、重新扫描同一范围,才能知道自己的操作是否解决了原来的占用问题。

获取软件

百度网盘:https://pan.baidu.com/s/1MtWEpMArLVWjAalfd3HosA?pwd=ynxj 提取码:ynxj

夸克网盘:https://pan.quark.cn/s/ed7dbcd88603

项目按 GPL v3 或更高版本提供。GitHub 仓库:https://github.com/windirstat/windirstat

相关推荐
jun_bai2 小时前
使用Aspose实现word文档合并,内容替换
windows·c#·word
mklpo1474 小时前
为不支持sse4.2命令集的老旧设备制作Win11 26H2系统镜像,2026-10-11。
运维·windows·python
Vex2une4 小时前
PowerShell 发展史:从命令行外壳到跨平台自动化引擎
windows·自动化·azure·powershell·vs code·脚本语言·dsc
富洋金锐5 小时前
windows-winmtr与pathping命令-网络丢包排查
网络·windows
xuxigifxfh5 小时前
牛客:BISHI2 【模板】栈的操作
java·开发语言·windows·算法
imperialeast18 小时前
WinAXP 2.4.0.828正式版
windows
周小董21 小时前
[1369]Windows上安装PostgreSQL
数据库·windows·postgresql
doujiaozh21 小时前
Win7 复活记:用 3 个补丁让 13 年前的老电脑跑通 Kimi API
windows
OliverQiu1 天前
开源一个 macOS 小工具:集中管理 ChatGPT 的网络启动配置
macos·chatgpt·swiftui·mac·proxy·codex·dmg