目录
一、前言
Windows Vista及以上的Windows系统(不包括Windows Server系列)的mklink
指令可以创建文件夹的链接(类似快捷方式)。
因为是从底层实现文件夹链接,所以这个链接是对应用程序透明的。
Windows 2000 和 Windows XP,以及 Windows Server系列 的相关功能使用的是linkd
指令。
二、mklink指令(/d /h /j)
1. 查看mklink指令
mklink指令属于Windows中cmd的内置指令,我们可以使用cmd查看mklink的语法和功能介绍。
点击“搜索”图标,搜索“cmd”或“命令提示符”,点击“以管理员身份运行”打开cmd命令提示符,
输入 mklink
指令,按下回车键后,即可查看语法和功能介绍。
2. mklink指令的语法
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 创建目录符号链接。默认为文件
符号链接。
/H 创建硬链接而非符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径
(相对或绝对)。
例子:我在 C:\Users\WeberZhou\.vscode\extensions
创建符号链接(软链接),指向文件真正所在路径 D:\Microsoft VisualStudioCode\VScode Extensions\
。
mklink /D "C:\Users\WeberZhou\.vscode\extensions" "D:\Microsoft VisualStudioCode\VScode Extensions\"
注意:i)各个参数之间必须要有一个空格隔开。
ii)每个路径都必须要使用英文(半角)双引号将路径括起来。
iii)建议使用绝对路径。
3. 关于参数 /d /h /j 的介绍
参数区别:
① /d
为目录创建符号链接,属于软链接,允许相对路径或绝对路径的链接;
② /h
为文件创建硬链接,属于硬链接;
③ /j
为目录创建联接点,属于软链接,只能是绝对路径的链接。
④当没有上面3个命令符时,默认的是为文件创建符号链接!文件类型:.symlink
(Symbolic Link)。
比如,分别创建C:\data\tmp的符号链接C:\1和软链接C:\2,那么C:\1指向的就是同级文件夹下的data文件夹下的子文件夹tmp,而C:\2指向的是C:\data\tmp这样的绝对路径。影响就是,如果把C:\1和C:\2这两个文件夹移动到d盘,那D:\1的链接就失效了,而D:\2仍然有效。
文件的硬链接是对文件创建的链接,比如对C:\data\1.txt创建链接C:\data\2.txt,那么这两个文件就是同一个文件的两个等价别名了,相当于是指向同一个硬盘存储空间的两个指针,删除其中任何一个都不影响另一个文件。但是限制就是这种链接不能跨分区。
链接类型 | 命令 | 文件类型 | 文件路径 | 空间占用 | 可链接类型 | 本质 | Windows下是否可跨磁盘 | 询问方式 | 源文件与链接文件关联关系 |
---|---|---|---|---|---|---|---|---|---|
符号链接 (软链接) |
/d |
.symlinkd |
相对路径/绝对路径 | 不占空间 | 只能是目录 | 相当于只是对源目录进行了引用, 可以理解为:只有使用权,没有所有权,可以当作快捷方式。 |
可以跨本地磁盘, 也可以跨网络磁盘(共享目录)。 |
本地访问:通过链接目录所在磁盘路径访问。 网络访问:通过tomcat可实现。 |
源目录移动、重命名或删除后,链接目录无效; 链接目录删除,源目录不受影响; 源目录里面的文件发生变化时(新增、修改、删除),链接目录里面的文件同步发生变化,反之,同样成立。 |
目录联接 (软链接) |
/j |
.junction |
只能是绝对路径 | 不占空间 | 只能是目录 | 同上,联接点。 | 只能跨本地磁盘。 | 同上。 | 同上。 但是,创建的链接文件夹移动后, 使用相对路径的符号链接会失效, 使用绝对路径的连接点链接仍有效。 |
硬链接 | /h |
.源文件类型 | 只能是绝对路径 | 占用空间和源文件一样 | 只能是文件 | 相当于对源文件进行拷贝备份, 可以理解为:执行了复制和粘贴的操作。 |
都不可以。 | 本地访问:通过链接文件所在磁盘路径访问。 网络访问:通过tomcat可实现。 |
源文件删除后,链接文件无效; 链接文件删除,源文件不受影响; 只有将源文件和链接文件全部删除时,才会将文件真正的删除; 当源文件内容发生变化时(修改),链接文件同步发生修改,反之,同样成立。 |
快捷方式 | 批处理 | .lnk |
只能是绝对路径 | 文件大小仅有几百字节Byte,与原文件大小无关。 | 文件和目录均可 | 只能跨本地磁盘 | 本地访问:自动跳转到文件、目录的所在磁盘路径访问。 网络访问:无法通过网络访问到该快捷方式所对应的实际文件。 |
源文件删除,快捷方式失效; 快捷方式删除,源文件不受影响; 只是创建了一个快捷方式。 |
4. mklink使用实例
① 不带参数 --> 为文件创建符号链接
② /d --> 为目录创建符号链接
③ /h --> 为文件创建硬链接
④ /j --> 为目录创建联接点
5. 出现报错的几种情况
① 报错:“拒绝访问”
原因:/h
是用来创建文件的硬链接的,但在输入的“Link路径”和“Target路径”中填写的却是文件夹目录的路径。
解决办法:输入的“Link路径”和“Target路径”中应该填写文件的路径。
② 报错:“无效开关”
原因:使用/
作为路径中的分隔符时,没有用英文(半角)双引号将路径括起来。
解决办法:路径中的分隔符用\
时,路径可以不用英文(半角)双引号括起来;若是使用/
作为路径中的分隔符时,必须要用英文(半角)双引号将路径括起来。
③ 出现错误:指令正常执行,但是创建了一个带有文件格式的文件夹,并且无法打开这个文件夹。
原因:/d
是用来创建目录的符号链接的,但在输入的“Link路径”和“Target路径”中填写的却是文件的路径。
解决办法:将刚才错误创建的文件夹删除,重新输入指令,注意输入的“Link路径”和“Target路径”中应该填写文件夹目录的路径。