创建目录或文件符号链接或硬链接。

语法

  1. mklink [[/d] | [/h] | [/j]] <link> <target>

参数

参数 说明
/d 创建目录符号链接。 默认情况下,此命令创建文件符号链接。
/h 创建硬链接而不是符号链接。
/j 创建目录交接点。
指定要创建的符号链接的名称。
指定新 (链接) 的相对或绝对路径。
/? 在命令提示符下显示帮助。

示例

若要创建一个名为 MyFolder 的符号链接并从根目录删除到 \Users\User1\Documents 目录,以及名为 Myfile.file 的硬链接到位于 目录中的 example.file 文件,请键入:

  1. mklink /d \MyFolder \Users\User1\Documents mklink /h \MyFile.file \User1\Documents\example.file rd \MyFolder del \MyFile.file
  1. mklink /J C:\Users\carl.wu\.nuget D:\Users\carl.wu\.nuget
  2. mklink /J C:\Users\carl.wu\.sonarlint D:\Users\carl.wu\.sonarlint
  3. mklink /J "C:\Program Files (x86)\WXWork" "D:\Program Files (x86)\WXWork"
  4. mklink /J "C:\ProgramData\Microsoft\VisualStudio\Packages" "D:\ProgramData\Microsoft\VisualStudio\Packages"
  5. mklink /J "C:\ProgramData\Microsoft\VisualStudio\Packages.zip" "D:\ProgramData\Microsoft\VisualStudio\Packages.zip"
  6. mklink /J "C:\Users\carl.wu\AppData\Roaming\Tencent\WXWork" "D:\Users\carl.wu\AppData\Roaming\Tencent\WXWork"
  7. mklink /J "C:\ProgramData\Package Cache" "D:\ProgramData\Package Cache"
  8. mklink /j "C:\Users\carl.wu\AppData\Roaming\npm-cache" "D:\Users\carl.wu\AppData\Roaming\npm-cache"
  9. mklink /j "C:\Users\carl.wu\AppData\Roaming\kingsoft" "D:\Users\carl.wu\AppData\Roaming\kingsoft"
  10. mkdir "D:\Users\carl.wu\AppData\Local"
  11. # 提示没有权限
  12. cp "C:\Users\carl.wu\AppData\Local\微信开发者工具" "D:\Users\carl.wu\AppData\Local\微信开发者工具"
  13. PS C:\Users\carl.wu>Move-Item "C:\Users\carl.wu\AppData\Local\微信开发者工具" "D:\Users\carl.wu\AppData\Local\微信开发者工具" -Force
  14. mklink /j "D:\Users\carl.wu\AppData\Local\微信开发者工具" "D:\Users\carl.wu\AppData\Local\微信开发者工具"
  15. PS C:\Users\carl.wu>cmd /c mklink /j "C:\Users\carl.wu\AppData\Local\微信开发者工具" "D:\Users\carl.wu\AppData\Local\微信开发者工具"
  16. mkdir "D:\Users\carl.wu\AppData\Local"
  17. mklink /j "C:\Users\carl.wu\AppData\Roaming\Code - Insiders" "E:\Users\carl.wu\AppData\Roaming\Code - Insiders"
  18. mklink /j "C:\ProgramData\Package Cache" "D:\ProgramData\Package Cache"

image.png
image.png

原文链接

https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/mklink


比较

可能单单说名字,你不一定能明白什么时候要用哪一种。于是我将这些链接的不同整理了出来贴在下面。

硬链接(Hard Link) 目录联接(Junction Point) 符号链接(Symbolic Link)
命令 mklink /H Link Target mklink /J Link Target mklink /D Link Target
作用 为某文件创建别名,可让不同的路径对应同一个文件的数据。
链接到文件 ✔️
链接到文件夹 ✔️ ✔️
需要提升为管理员权限 需要 不需要 通常需要 [坑1]
跨驱动器卷(盘符) ✔️(仅本地计算机) ✔️(包括 SMB 文件或路径)
操作系统支持 Windows NT 3.1 开始支持
Windows 2000 开始有 API CreateHardLink()
Windows NT 6.0 开始能使用 mklink /H
Windows 2000+ Windows Vista+
可链接到不存在的目标 ✔️ ✔️
可链接到相对目录 ❌(可以使用相对路径创建,但创建完即变绝对路径) ✔️
删除方法 del rd rd / del
当链接被单独删除后 只有所有指向原始文件的硬链接和原始文件全部删除后文件数据才会被删除。 Windows Vista 之后原始文件夹不受影响;Windows 2000/XP/2003 会导致原始子文件夹被删除。 原始文件夹不受影响。
当原始文件被单独删除后 硬链接依然能正常访问到文件的数据。 目录联接失效,指向不存在的目录。 符号链接失效,指向不存在的目录。

原文链接

https://blog.walterlv.com/post/ntfs-link-comparisons.html