Windows 有多磁盘管理,那又如何,许多程序为了节省上行带宽流量,会将大量数据/预训练模型默认下载到我们 C 盘的某个位置,动辄就是几 GB 甚至几十 GB,有的干脆没有提供修改入口。
安装系统时我特意为 C 盘留出 200 GB 的空间,后来从职业装机那边了解到,对于个人和工作使用已经算非常大了。
这我属实没想到,尤其在大模型时代,200 GB 都被我用的只剩 2 G,普通计算机用户岂不啥也不敢下或者总是重装系统?
很多安全软件(杀毒)都会自带清理工具,即使 Windows 11 的 设置
> 系统
> 存储
也会提供同样的功能,
然而 C 盘一周莫名其妙缩水几十 GB,清理工具一扫描也才 2 GB,甚至包括回收站内容。
如何清理 C 盘
清理工具会帮我们扫描缓存和垃圾文件,但许多 桌面软件
和 CLI 程序
自动生成的配置、缓存不在其扫描范围之内。
甚至比如 Rust 语言的 cargo,和 Node.js 的 npm,随便都是缓存都是几个 G 大小。
想要彻底清理,重点清理对象是 C:\Users\你的系统用户名 和它的 AppData 子目录,手动检索的过程必不可少。
首先打开目标软件,查看它的设置菜单是否包含 文件管理
/ 数据存储路径
的选项
比如 微信 PC 版,聊天文件就占了我 C 盘 20 GB,当然它的设置菜单提供了修改存储路径,避免用户手动拖走后无法索引到聊天文件,皆大欢喜。
如果未提供设置入口,就需要我们用些方法了。
很多用户会直接将其中某个文件夹拖入另一磁盘,懂些计算机的人还会查找 系统/用户环境变量
中是否包含改路径,然后将其修改。
这样做其实也没什么问题,只是如果你将它固定在 任务栏
/ 开始菜单
,它会显示白色的未知文件图标,如果你用了像 PowerToys Run 那样的快捷启动程序,也会得到同样结果,甚至搜索不到该程序。
但你如果想坚持这个操作,可以这样:
- 首先将文件夹拖入到其他磁盘的任意位置,比如将 C:\Users\你的系统用户名\AppData\Local\WeChat 拖到 D:\Tools\WeChat
- 然后找到 PowerShell,比如用
Win + S
快捷键搜索它,然后右键 以管理员权限打开,输入这个命令,
它命令可以帮我们快速查找系统环境变量中某个值是否包含我们刚刚拖走的 \AppData\Local\WeChat:
如果什么都没输出,到此就算完成了。Get-ChildItem -Path Env: | Where-Object { $_.Value -like "*\AppData\Local\WeChat*" }
如果它输出这样的内容:
这些就是用到它原有目录的环境变量,我们要把所有的 C:\Users\你的系统用户名\AppData\Local\WeChat 改为 D:\Tools\WeChatName Value ---- ----- Path ...其他环境变量路径...;C:\Users\你的系统用户名\AppData\Local\WeChat WECHAT C:\Users\你的系统用户名\AppData\Local\WeChat\bin
如果不修改对应环境变量,你的软件可能会无法运行。
我想推荐的,是最安全的方法:Symbolic Link(符号链接)
符号链接就像是文件夹的快捷方式一样,没有任何副作用。它不会让软件的图标丢失,也不需要修改环境变量。
- 首先同样将文件夹拖入到其他磁盘的任意位置,还是拿上个例子举例:C:\Users\你的系统用户名\AppData\Local\WeChat 拖到 D:\Tools\WeChat
- 以管理员权限打开 PowerShell,执行以下命令:
New-Item -ItemType SymbolicLink -Path C:\Users\你的系统用户名\AppData\Local\WeChat -Target D:\Tools\WeChat
执行完成后,C:\Users\你的系统用户名\AppData\Local\WeChat 仍会存在,但文件夹图标右下角多了一个快捷方式的小标识。
假设这个文件夹有 10 GB,它仍然会存储在 D 盘中,C 盘仍然能减少 10 GB。
而软件和代码在访问资源时,仍然通过 C:\Users\你的系统用户名\AppData\Local\WeChat 找到对应的 D:\Tools\WeChat 中的资源。
如法炮制,到此就算完美清理了 C 盘存储空间。
但是,如果被拖走的文件夹内本身存在 Symbolic Link,它们都会消失
比如许多 Windows 开发者喜欢用 Chocolatey / Scoop 来安装程序,由于程序的多版本问题,
Scoop 会将程序最新版本软链接到程序根目录的 current 下,此时我们需要在社区中搜索答案或寻求帮助。
关于 Scoop 的解决方案,假如你会用 Bash,可以执行命令:
scoop list | awk '{print $1}' | tail -n +2 | xargs -I {} scoop reset {}
它会批量为已安装的程序重新生成 Symbolic Link。