系统学习 Windows 学习路径:从 CMD 到 PowerShell、系统网络,再到 WSL 与 Server

mklink

创建符号链接、硬链接或目录联接,把路径指向别处。

补充说明

mklink 在 NTFS/ReFS 卷上创建链接:默认创建文件符号链接,/d 创建目录符号链接,/h 创建硬链接,/j 创建目录 junction(联接)。符号链接可以跨卷、可以指向 UNC 路径;硬链接只能指向同一卷上的文件,多个链接共享同一份数据;junction 只能指向本机本地卷上的目录,不能指向映射的网络驱动器(官方说明)。它常用于把大目录搬到另一块盘后在原位置留一个入口,或让多个项目共享同一份配置。

边界:链接不是复制,目标删了链接就悬空;通过链接写入会直接改到目标。硬链接没有“原文件”和“副本”之分,删掉任意一个链接,数据仍在其它链接下,直到最后一个链接被删。符号链接的相对目标按链接所在目录解析,不是按当前目录;相对符号链接还限制在单卷内。创建符号链接默认需要管理员权限或 SeCreateSymbolicLinkPrivilege,Windows 10/11 开启开发者模式后部分非管理员场景可以创建;硬链接和 junction 通常不需要提权,但仍受父目录和目标 ACL 限制。

Windows Vista/Server 2008 起内置 mklink,Windows 10/11 与 Server 2016+ 参数一致。PowerShell 中没有 mklink 别名,要用 New-Item -ItemType SymbolicLink/Junction/HardLink;mklink 是 CMD 外部程序,在 PowerShell 中可直接调用。FAT/exFAT 不支持这些链接。

影响范围 / 先备份 / 如何回滚:链接会改变后续读写实际落到的位置,放在系统目录或服务配置路径上可能让程序写到错误目标;递归工具若跟随链接,可能重复复制甚至误删目标内容。创建前确认链接名不存在、记录目标绝对路径并备份目标数据;回滚时只删除链接本身:文件链接用 del,目录链接或 junction 用 rd,不要用 del 删目录链接,也不要把链接交给会跟随链接递归删除的第三方工具。

常用示例

# 1. 给共享配置文件建文件符号链接
C:\> mklink C:\dev\app-config.ini D:\shared\config.ini

# 2. 把大资源目录留在 D 盘,项目里用目录符号链接访问
C:\> mklink /D C:\dev\assets D:\shared\assets

# 3. 用 junction 把构建缓存指向本地另一块盘
C:\> mklink /J C:\build\cache D:\cache\build

# 4. 为同一卷上的文件建硬链接,节省空间且共享修改
C:\> mklink /H C:\data\report.docx C:\backup\report.docx

# 5. 目录符号链接可以指向 UNC 共享
C:\> mklink /D C:\logs \\fileserver\share\logs

# 6. 列出目录中的链接及其类型
C:\> dir /AL C:\dev

# 7. 删除目录链接本身,目标不受影响
C:\> rd C:\dev\assets

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. /h、/j、/d 三种链接分别有什么限制?
  2. 删除目录符号链接或 junction 应该用什么命令?为什么不能用 del?
  3. 创建符号链接提示权限不足时,有哪些解决方向?
答案
  1. /h 只能链接同卷文件,/j 只能链接本地卷目录,/d 可跨卷并可指向 UNC。
  2. 用 rd 删链接本身;del 会把目录链接当目录,删除目标里的文件。
  3. 用管理员 CMD,或在 Windows 10/11 启用开发者模式并按策略允许非管理员创建。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令