通过 mklink 命令可以创建文件或文件夹的链接,而这种链接跟快捷方式是不一样的。然而我们还可能会遇到其使用过程中的一些坑,本文将整理这些坑并提供解决方法。


 

0x00 背景介绍:mklink

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

例如,为 D:\OneDrive\Foo 文件夹创建链接到 D:\Foo,那么 D:\OneDrive\Foo 中有一个 .git 文件时,绝大多数程序都会以为 D:\Foo 中也存在 .git 文件,而且文件内容一模一样。

mklink 可以创建符号链接、硬链接和目录链接。在 cmd 中输入 mklink 即可看到以下这样的帮助信息。

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 命令。

如果你是一个重度强迫症患者,那么可以编写一个 powershell 的扩展函数来实现:Creating a Symbolic Link using PowerShell - Learn Powershell - Achieve More。

0x02 坑:权限

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

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

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


参考链接

解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)的更多相关文章

  1. Windows硬链接 软链接 符号链接 快捷方式

    http://blog.nsfocus.net/shortcuthard-linkjunction-pointsymbolic-link/ Windows支持4种”链接”机制,分别是shortcut. ...

  2. WINDOWS 的 MKLINK : 硬链接,符号链接 : 文件符号链接, 目录符号链接 : 目录联接

    玩转WIN7的MKLINK 引言: 换了新电脑,终于再次使用上啦WIN7 ,经过一个周每天重装N次系统,... ... ... ... 在xp系统下,junction命令要用微软开发的小程序 junc ...

  3. 转: linux文件链接(软链接和硬链接)

    链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic l ...

  4. Unix硬链接和符号链接(转)

    首先要弄清楚,在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文 ...

  5. UNIX环境编程学习笔记(10)——文件I/O之硬链接和符号链接

    lienhua342014-09-15 1 文件系统数据结构 UNIX 文件系统通过 i 节点来存储文件的信息.如图 1 所示为一个磁盘柱面上的 i 节点和数据块示意图.其中 i 节点是一个固定长度的 ...

  6. javascript 解决默认取整的坑(目前已知的最佳解决方案)

    javascript 解决默认取整的坑(目前已知的最佳解决方案) 复现该问题 js在数字操作时总会取更高精度的结果,例如1234/10结果就是123.4,但是在c或者java中整数除以10的结果还是整 ...

  7. 如何解决DEDE织梦友情链接字数限制与链接个数限制的问题?

    如何解决DEDE织梦友情链接字数限制与链接个数限制的问题!织梦网站非常适合网站搭建以及网站优化,而友情链接是做优化必不可少的模块,我们经常搭建织梦网站发现织梦系统的友情链接模板有时候会限制字数不显示以 ...

  8. JQ绑定事件的叠加和解决,index()方法的坑

    JQ绑定事件的叠加和解决,index()方法的坑 前言 在做过几个不大不小的项目后,发现技术这种东西,必须要多多实践,才能发现各种问题,理论的知识掌握的再好终究是纸上谈兵. 因此目前感觉有两点是必须要 ...

  9. 10.符号链接&创建链接

    在我们到处查看时,我们可能会看到一个目录,列出像这样的一条信息: lrwxrwxrwx 1 root root 11 2007-08-11 07:34 libc.so.6 -> libc-2.6 ...

随机推荐

  1. 完美解决 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

    问题描述 好久之前的一个Android项目,最近需要重构一下 因为Android Studio的开发环境以及Gradle的版本等等都进行了一定的更新,于是导入Project以后,出现了报错: No t ...

  2. 解决:make:cc 命令未找到的解决方法

    安装Redis的时候报这个错误 原因:未安装gcc 解决方法:安装gcc 自动安装,包括依赖库[root@VM_220_111_centos redis-3.2.9]# yum -y install ...

  3. Android真机调试——远程主机强迫关闭了一个现有的连接。

    以前用真机调试程序的时候,Android Studio 出现如下的错误 [2016-11-12 10:37:36 - DeviceMonitor] Adb connection Error:远程主机强 ...

  4. 【BZOJ3597】方伯伯运椰子(分数规划,网络流)

    [BZOJ3597]方伯伯运椰子(分数规划,网络流) 题解 给定了一个满流的费用流模型 如果要修改一条边,那么就必须满足流量平衡 也就是会修改一条某两点之间的路径上的所有边 同时还有另外一条路径会进行 ...

  5. 设计模式--备忘录模式C++实现

    备忘录模式C++实现 1定义Memento pattern 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以将该对象恢复到原先的状态 2类图 3实现 clas ...

  6. php5权限控制修饰符,interface和abstract

    1.public:public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直 ...

  7. UVA-1619 Feel Good (单调队列)

    题目大意:给一个非负整数序列,求出一个使得区间和乘以区间最小值最大的区间. 题目分析:单调队列.维护两个数组,l[i]表示以a[i]为最小值的左半区间的最左边端点,r[i]表示以a[i]为最小值的右半 ...

  8. RabbitMQ其他(八)

    1 RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer) 什么是ProtoBuf? 一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序 ...

  9. 双系统下ubuntu不能访问658GB卷,磁盘挂载失败。

    win10+ubuntu双系统出现以下错误: Error mounting /dev/sda5 at /media/captain/AC8CF85B8CF8218E: Command-line `mo ...

  10. 029——VUE中键盘语义修饰符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...