mklink ,这是一个内置的命令行工具,用于创建符号链接(symbolic link)、硬链接(hard link)或目录联接(junction)。

使用前提

  • 需要以 管理员身份 运行命令提示符(CMD):右键“命令提示符” > “以管理员身份运行”。
  • 从 Windows Vista 开始支持(包括 Windows 10/11)。
  • 输入 mklink /? 可以查看帮助。

基本语法

MKLINK [[/D] | [/H] | [/J]] 链接名 目标路径
  • 链接名 :你要创建的链接路径(新名称,不能已存在)。
  • 目标路径 :现有的文件或文件夹路径(可以是绝对路径或相对路径,建议用双引号包裹含空格的路径)。

参数说明和常见用法

  1. 文件符号链接(Symbolic Link,默认)
    • 不加任何参数,或隐式用于文件。

    • 示例:为文件创建符号链接(类似快捷方式,但更底层,程序透明)。

      mklink 链接文件.txt C:\路径\目标文件.txt
      

      或带双引号:

      mklink "C:\MyLink.txt" "D:\Original.txt"
      
  2. 目录符号链接(/D)
    • 用于文件夹,类似软链接,支持跨盘符、网络路径。

    • 示例:

      mklink /D "C:\MyFolderLink" "D:\OriginalFolder"
      
  3. 硬链接(/H)
    • 只用于 文件 (不能用于文件夹),必须在同一分区,不占用额外空间,删除一个另一个仍存在。

    • 示例:

      mklink /H "C:\HardLink.txt" "C:\Original.txt"
      
  4. 目录联接(/J,也称 Junction)
    • 用于文件夹,只能本地绝对路径,不能跨网络,但常用于迁移大文件夹(如解放 C 盘空间)。

    • 示例:

      mklink /J "C:\OldFolder" "D:\NewLocationFolder"
      

      常见场景:先把文件夹剪切到 D 盘,再用此命令在原位置创建联接,程序不会察觉变化。

注意事项

  • 创建符号链接(无参数或 /D)通常需要管理员权限。
  • 删除链接:
    • 文件链接:用 del 链接名 (只删链接,不删目标)。
    • 目录链接:用 rmdir 链接名 (只删链接,不删目标)。
    • 千万别用 del 删除目录链接里的内容 ,会删目标文件!
  • 查看链接类型:在资源管理器中,符号链接有小箭头图标;用 dir 命令会显示
  • 与快捷方式区别:mklink 创建的链接更底层,许多程序(如游戏、软件安装路径)能直接识别,而.lnk 快捷方式有时不行。

示例:解放 C 盘空间(常见需求)

假设要把 C:\Program Files\BigApp 移到 D 盘:

  1. 关闭相关程序。

  2. 剪切 BigApp 文件夹到 D:\BigApp 。

  3. 以管理员运行 CMD:

    mklink /J "C:\Program Files\BigApp" "D:\BigApp"
    

程序仍能正常运行,像没动过一样。

mklink /J "C:\Program Files\BigApp" "D:\BigApp" 此例中,在C:\Program Files\BigApp写入新文件,它保存在哪里?

在你给的例子中:

mklink /J "C:\Program Files\BigApp" "D:\BigApp"
  • C:\Program Files\BigAppjunction (目录联接),它只是一个“重定向点”,本身不存储任何实际数据。
  • D:\BigApp 是真正的目标文件夹,存放所有实际文件。

如果你通过 C:\Program Files\BigApp 这个路径写入新文件(比如程序安装、保存数据、创建子文件夹等):

  • 新文件会 实际保存在 D:\BigApp 中(包括所有子文件夹)。
  • 从资源管理器或任何程序看来,仿佛文件写在了 C 盘,但实际上全部在 D 盘占用空间。

为什么这样?

Junction(/J)是 NTFS 文件系统的重解析点(reparse point),它会透明地将所有读写操作重定向到目标路径。程序和系统完全察觉不到这个“欺骗”,所以:

  • 读取旧文件:从 D:\BigApp 读取。
  • 写入新文件:写入到 D:\BigApp。
  • 删除文件:删除 D:\BigApp 中的文件(小心!通过 junction 删除会真正删掉目标文件)。

这正是用来“解放 C 盘空间”的核心机制:把大文件夹移到 D 盘后,用 junction 在原位置“伪装”回去,程序仍按老路径运行,新产生的数据也自动去 D 盘。

验证方法

  1. 创建一个新文件: 在 C:\Program Files\BigApp 下新建一个 test.txt。
  2. 检查位置: 打开 D:\BigApp,你会看到 test.txt 出现在那里,而 C 盘的 junction 本身几乎不占空间。

如果目标 D:\BigApp 不存在或不可访问,写入会失败(报错如“无法访问”)。

Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

登录

注册

重设密码

请输入您的用户名或电子邮箱地址。您会收到一封包含创建新密码链接的电子邮件。