简介
E:\temp>mklink /?
创建符号链接。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 创建目录符号链接。默认为文件
符号链接。
/H 创建硬链接,而不是符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径
(相对或绝对)。
/D和/J
两种效果相同,都是对目录创建符号链接,相当于软链接。效果相当于创建快捷方式。但一旦源目录名修改,快捷方式即失效。
演示如下:
E:\temp>mkdir dir1
E:\temp>mklink /d dir2 dir1
为 dir2 <<===>> dir1 创建的符号链接
E:\temp>mklink /j dir3 dir1
为 dir3 <<===>> dir1 创建的联接
E:\temp>dir
驱动器 E 中的卷是 软件
卷的序列号是 2551-33F3
E:\temp 的目录
2018/04/09 18:54 <DIR> .
2018/04/09 18:54 <DIR> ..
2018/04/09 18:53 <DIR> dir1
2018/04/09 18:54 <SYMLINKD> dir2 [dir1]
2018/04/09 18:54 <JUNCTION> dir3 [E:\temp\dir1]
0 个文件 0 字节
5 个目录 69,970,747,392 可用字节
从dir
执行命令结果来看:
- mkdir 创建的目录为<DIR>类型
- mklink /d 创建的符号链接为<SYMLINKD>类型
- mklink /j 创建的符号链接为<JUNCTION>类型
区别在于/D
为相对路径,/J
为绝对路径。所以,如果把dir2、dir3移动到其他目录,dir2就无法访问dir1目录了,提示位置
不可用。但dir3却可以依然访问dir1。(PS:使用move命令可以移动dir2,dir3)
如果使用/D
创建符号链接,且指定的Target为绝对路径,则/D
和/J
的效果是一致的。
比如:执行mklink /D dir4 E:\temp\dir1
。
从下图中我们也可一窥究竟:
/H
只能对文件来创建硬链接。相当于文件拷贝,占用两份相同内存。二者之间存在映射,修改任一文件内容都会反映到原始文件。即使将文件名修改后,再继续修改文件内容,依然会同步到另一文件。可以理解/H创建的硬链接再二者之间建立了强的映射关系,不因文件名改变而改变。
E:\temp>mklink /H 22.txt 2.txt
为 22.txt <<===>> 2.txt 创建了硬链接
那我们也可以为文件创建软链接,mklink 11.txt 1.txt
。