如何在 Windows 创建硬链接

Posted on Thu, 25 Sep 2025 19:10:00 +0800 by LiangMingJian


需求

在项目开发中,往往存在多个项目文件夹,分别管理不同的项目代码文件。有时候,这些不同的项目代码文件可能会使用到相同的资源。此时,如何同步管理这些资源就成了一个问题(毕竟不能每改一个资源都复制一份到其他项目里面),同时要保证这些文件能被 VSCode,PyCharm,Obsidian 这些软件正确识别。

解决方法

在 Linux 系统中,符号链接(Symbolic Link)和硬链接(Hard Link)是两个用于同步文件的工具。通过链接工具的使用,可以在另外一个地方调用或管理某一个地方的资源,这也就实现了上面的需求。

而在 Windows 系统中,同样存在与 Linux 链接工具类似的工具,比如符号链接,硬链接,目录链接,快捷方式。

需要注意的是,要实现文件能被 VSCode,PyCharm,Obsidian 这些软件正确识别,在创建链接时可以创建为符号链接或目录链接

Windows 的链接工具

符号链接是指向一个文件路径或目录路径的链接工具。

当系统识别到符号链接时,它会跳转到符号链接所指向的目标路径中去,而不改变此时的文件路径。此时,符号链接看上去和普通的文件和文件夹没有区别,通过符号链接的操作(读,写,遍历)都会被重定向到目标文件或目录中

在 Windows 系统中,创建符号链接需要在终端执行以下命令:

Cmd

mklink /D <链接路径> <链接目标>

Powsershell

New-Item <链接路径> -ItemType SymbolicLink -Target <链接目标>

上述命令只能在对应环境中使用,否则会报错。比如,Windows 11 右键里面的终端默认使用的是 Powershell,则要使用 Powsershell 的命令

目录链接(junction point)

目录链接是指向一个目录访问点的链接。

目录链接只能应用在目录上。它通过建立与目录访问点的交接点(junction point)来将用户所有对交接点操作映射到实际的目录上。

此时,通过建立目录链接,可以在只有一个目录实体的前提下,允许用户或程序从本地系统多个位置访问此目录。

在 Windows 系统中,创建目录链接需要在终端执行以下命令:

Cmd

mklink /J <链接路径> <链接目标>

Powsershell

New-Item <链接路径> -ItemType Junction -Target <链接目标>

硬链接是指向一个文件数据对象的链接工具。

硬链接只能使用在文件上。当系统识别到硬链接时,它会读取这个文件所指示的数据对象,而不是原文件。因此,即使删除原文件,这个硬链接还是可以读取到数据的,因为原文件指示的数据对象还是能被硬链接访问。

特别注意,硬链接只能使用绝对路径,同时它与目标文件必须位于同一卷,不能跨盘符。

在 Windows 系统中,创建硬链接需要在终端执行以下命令:

Cmd

mklink /H <链接路径> <链接目标>

Powsershell

New-Item <链接路径> -ItemType HardLink -Target <链接目标>

快捷方式(shortcut)

快捷方式是以 .lnk 后缀存在的文件,文件大小仅有几百字节,与原始文件大小无关。

与其它链接工具相比,快捷方式因为是文件,所以支持移动,同时其作用范围更为广阔,不仅支持文件,目录,同时还可以用于应用程序,网络地址,网络驱动器等。

与其他链接方式相比,快捷方式只能被资源管理器解析识别。在 VSCode,PyCharm,Obsidian 这些软件中,快捷方式会被识别为一个文件。

在 Windows 系统中,创建快捷方式可直接【右键 -> 创建快捷方式】即可。