Featured image of post C 盘经常爆满?教你简单的 DOS 命令 mklink 拯救 C 盘!

C 盘经常爆满?教你简单的 DOS 命令 mklink 拯救 C 盘!

问题背景

C 盘空间告急是 Windows 用户的经典痛点,罪魁祸首通常是:

  • 微信/QQ 的聊天记录和文件缓存(动辄几十 GB)
  • 浏览器缓存和用户数据
  • pip / npm / conda / cargo 等包管理器的全局缓存
  • Adobe / Office / 游戏等大型软件的默认安装/数据目录
  • Windows 更新残留和临时文件

这些软件大多 默认把数据写死到 C 盘,且不提供修改路径的选项。重装软件、改注册表等方式既麻烦又有风险。

mklink 命令可以优雅地解决这个问题——把数据实际存储在 D/E 盘,但软件"以为"它还在 C 盘。


mklink 是 Windows 内置的命令行工具(Vista 起),用于创建 链接(Link)。它本质上是一个 “路径的别名/指针”,类似于 Linux 的 ln -s。

🧊 类比:就像桌面快捷方式——你双击桌面的图标,实际打开的是另一个位置的文件。mklink 做的就是把"真实存储位置"和"软件期望的路径"关联起来。


三种链接类型

类型 命令 适用对象 特点
符号链接 /D 目录 可跨分区,最常用,类似"目录的快捷方式"
硬链接 /H 文件 同一分区内,多个路径指向同一份数据
目录 Junction /J 目录 跨分区,老的 NTFS 技术,兼容性更好

⭐ 日常使用首选 /J(目录 Junction)或 /D(目录符号链接)。对于移动软件数据目录的场景,两者效果几乎一样。


操作步骤

关闭目标软件

确保要迁移数据的软件 完全关闭(包括后台进程),否则文件被占用无法移动。

移动原始文件夹

1
2
# 把 C 盘的原始目录 移动/剪切 到目标盘
move "C:\原路径" "D:\新路径"

⚠️ 不要用复制! 用移动(move)或剪切,确保原路径不再存在。

创建链接

1
2
# 用 /J 创建目录 Junction
mklink /J "C:\原路径" "D:\新路径"

或者用 /D:

1
mklink /D "C:\原路径" "D:\新路径"

验证

打开 C 盘原路径,确认能正常访问 D 盘的文件。

🔍 在 CMD 中进入父目录,执行 dir,链接项会显示 <JUNCTION> 或 <SYMLINKD> 标记。


常见应用场景

微信/WeChat 数据迁移 ⭐

微信是 C 盘杀手,聊天记录和文件缓存轻松几十 GB。

1
2
3
4
5
6
# 关闭微信
# 移动数据目录
move "%USERPROFILE%\Documents\WeChat Files" "D:\Data\WeChat Files"

# 创建链接
mklink /J "%USERPROFILE%\Documents\WeChat Files" "D:\Data\WeChat Files"

WeChat 新版路径可能在 C:\Users\用户名\Documents\WeChat Files,旧版在安装目录下的 WeChat Files。

QQ 数据迁移

1
2
3
4
5
# QQ 个人文件夹通常在
# C:\Users\用户名\Documents\Tencent Files

move "C:\Users\你的用户名\Documents\Tencent Files" "D:\Data\Tencent Files"
mklink /J "C:\Users\你的用户名\Documents\Tencent Files" "D:\Data\Tencent Files"

Chrome / Edge 浏览器缓存

1
2
3
4
5
6
7
# Chrome 用户数据
move "%LOCALAPPDATA%\Google\Chrome\User Data" "D:\BrowserData\Chrome"
mklink /J "%LOCALAPPDATA%\Google\Chrome\User Data" "D:\BrowserData\Chrome"

# Edge 用户数据
move "%LOCALAPPDATA%\Microsoft\Edge\User Data" "D:\BrowserData\Edge"
mklink /J "%LOCALAPPDATA%\Microsoft\Edge\User Data" "D:\BrowserData\Edge"

开发工具缓存

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# pip 缓存
move "%LOCALAPPDATA%\pip\cache" "D:\DevCache\pip"
mklink /J "%LOCALAPPDATA%\pip\cache" "D:\DevCache\pip"

# npm 缓存
move "%LOCALAPPDATA%\npm-cache" "D:\DevCache\npm"
mklink /J "%LOCALAPPDATA%\npm-cache" "D:\DevCache\npm"

# Maven 本地仓库
move "%USERPROFILE%\.m2\repository" "D:\DevCache\maven"
mklink /J "%USERPROFILE%\.m2\repository" "D:\DevCache\maven"

更推荐的做法是直接配置包管理器的缓存路径(如 npm config set cache),环境变量方案更稳定。mklink 作为兜底方案。

Windows 应用商店应用 / 大型游戏

部分 UWP 应用和 Xbox Game Pass 游戏无法修改安装路径,可以通过 mklink 迁移。

1
2
3
# 以 Forza Horizon 等游戏为例
# 通常在 C:\Program Files\WindowsApps 或 C:\XboxGames
# 需要先获取文件夹权限(TrustedInstaller)

⚠️ 操作 WindowsApps 目录较复杂,涉及权限获取,普通用户谨慎操作。

OneDrive / iCloud 云盘同步目录

1
2
move "C:\Users\你的用户名\OneDrive" "D:\OneDrive"
mklink /J "C:\Users\你的用户名\OneDrive" "D:\OneDrive"

注意事项 & 避坑指南

问题 说明
必须先移动再链接 mklink 要求目标路径 不存在,否则报错 文件已存在
移动前备份 虽然操作可逆,但建议重要数据先备份
不要对系统关键目录操作 C:\Windows、C:\Program Files 等系统目录勿动
删除链接 ≠ 删除数据 在 C 盘删除那个"快捷方式"只删除链接,D 盘数据还在
删除链接的正确姿势 rmdir "C:\链接路径"(不是 del)
以管理员身份运行 CMD 部分目录需要管理员权限才能创建链接
NTFS 文件系统 仅 NTFS 支持,FAT32/exFAT 不支持
还原操作 删除链接 → 把 D 盘数据移回 C 盘原路径即可

删除/还原一个链接

1
2
3
4
5
# 删除链接(不会删除 D 盘的原始数据)
rmdir "C:\原路径"

# 如果需要还原:把数据移回来
move "D:\新路径" "C:\原路径"

快速诊断 C 盘:谁在占用空间?

在执行 mklink 之前,建议先用工具分析 C 盘,找到真正的"元凶":

工具 特点
WizTree 极速扫描,直观的树图,免费
SpaceSniffer 可视化方块图,直观
TreeSize Free 经典工具,按文件夹大小排序
Windows 自带磁盘清理 cleanmgr,清理临时文件和更新残留

🔥 推荐 WizTree——直接用 MFT 解析,几秒扫描完整个硬盘。


总结

mklink 的核心思想就是:

1
2
3
软件以为数据还在 C:\某路径
       ↓ (mklink 创建的链接)
实际存储在 D:\某路径

操作口诀:关闭软件 → 移动文件夹 → mklink 链接 → 验证能用

它比「改注册表」「重装到其他盘」更安全、可逆、高效。掌握这个命令,C 盘再也不会莫名其妙爆红了。🎉


相关阅读

  • 磁盘清理工具:WizTree / SpaceSniffer
  • 包管理器缓存路径配置:npm / pip / cargo 官方文档
comments powered by Disqus
使用 Hugo 构建
主题 Stack 由 Jimmy 设计