解决 mklink 使用中的各类坑(硬连接,软连接/符号连接,目录连接)

 

经过 mklink 命令能够建立文件或文件夹的连接,而这种连接跟快捷方式是不同的。然而咱们还可能会遇到其使用过程当中的一些坑,本文将整理这些坑并提供解决方法。html


 

0x00 背景介绍:mklink

mklink 能够像建立快捷方式同样创建文件或文件夹的连接,但不一样于快捷方式的是,mklink 建立的连接绝大多数程序都不会认为那是一个连接,而是一个实实在在的文件或文件夹。git

例如,为 D:\OneDrive\Foo 文件夹建立连接到 D:\Foo,那么 D:\OneDrive\Foo 中有一个 .git 文件时,绝大多数程序都会觉得 D:\Foo 中也存在 .git 文件,并且文件内容如出一辙。shell

mklink 能够建立符号连接、硬连接和目录连接。在 cmd 中输入 mklink 便可看到如下这样的帮助信息。windows

C:\Users\lvyi>mklink
建立符号连接。

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      建立目录符号连接。默认为文件
                符号连接。
        /H      建立硬连接而非符号连接。
        /J      建立目录联接。
        Link    指定新的符号连接名称。
        Target  指定新连接引用的路径
                (相对或绝对)。

具体的使用不是本文的重点,能够阅读本文末尾的参考资料了解,这里只给出他们之间的大致区别。安全

使用方式 适用于 快捷方式小箭头
不带参数 文件
/D 文件夹
/J 文件夹
/H 文件

上面的表格顺序,从上到下的行为从愈来愈像快捷方式到愈来愈像两个独立的文件夹。函数

0x01 坑:PowerShell 中没有 mklink 命令

是的,PowerShell 中就是中没有 mklink 命令。若是要在 powershell 中使用 mklink,那么得先敲 cmd 进入 cmd 以后再使用 mklink 命令。lua

若是你是一个重度强迫症患者,那么能够编写一个 powershell 的扩展函数来实现:Creating a Symbolic Link using PowerShell - Learn Powershell - Achieve Morespa

0x02 坑:权限

默认咱们的用户帐户是 Administrators 组的,会继承它的权限设定。正常状况下,咱们使用 mklink 是能够成功执行的。但若是文件系统的设置比较奇怪或者重装过系统,那么可能出现没有权限的错误。.net

C:\Users\lvyi>mklink /D D:\Foo D:\OneDrive\Foo
你没有足够的权限执行此操做。

这时,使用管理员权限启动 cmd 是最简单的作法。不过也能够考虑在 本地安全策略(secpol.msc)\本地策略\用户权利分配 中添加当前用户。code


参考连接

相关文章
相关标签/搜索