Windows中的软链接mklink

6,230 阅读3分钟

最近接到一个傻瓜任务,定期删除软件目录下的日志文件,但具体要保留多少天的日志确定不了。所以定时调度不能满足需求。

为什么要删除日志?C盘50GB D盘900G,实施人员把软件直接装到C盘了。。为了一劳永逸,把日志目录搞到D盘后在软链过去。但是win快捷方式并不能像Linux软链接那样。经查找发现Windows需使用mklink命令完成该项操作。

实战

一、打开CMD创建测试目录

D:\> mkdir D:\Test\log

二、查看命令使用方式

D:\>mklink
创建符号链接。

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

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

2.1、不增加Option选项

MKLINK Link Target 该命令的功能只能用于软链文件,而不是文件夹

D:\Test\log创建a.txt

C:\Windows\system32> mklink C:\a.txt D:\Test\log\a.txt

为 C:\a.txt <<===>> D:\Test\log\a.txt 创建的符号链接

实际上这个文件是存储在 D:\Test\log 文件夹下的,对这两个文件编辑哪个都会同时改变。

2.2、增加/D Option选项

MKLINK /D Link Target 该命令功能为创建目录的符号链接。同样这个也不是快捷方式,相当于一个虚拟的文件夹,对这两个目录中编辑哪个都会同时改变。

C:\Windows\system32>mklink /D C:\log D:\Test\log
为 C:\log <<===>> D:\Test\log 创建的符号链接

2.3、增加/J Option选项

MKLINK /J Link Target 这个命令跟第上一个命令非常相似,这个命令无需管理员权限。

C:\Users\xxzx>mklink /J C:\log D:\Test\log
为 C:\log <<===>> D:\Test\log 创建的联接

2.4、/H选项

该选项同样不需要管理员权限,经测试,该参数只能硬链文件,不能硬链目录

三、/D/J的区别

  • /D 可以使用相对路径方式创建,/J必须绝对路径方式创建。
  • /D快捷方式只能用于本机,mklink是基于文件系统的,网络访问的话要用/J
  • 复制剪切与移动
    • 复制:均生成源目录的副本,变为一般文件夹
    • 移动剪切:/D生成的目录移动或剪切到其他地方,/d生成的原目录消失,只有移动到新地方目录存在。源目录在新增文件,会与新地方的目录相关联。与之前第一次生成的目录不会再有任何关系。
    • 移动剪切: /J生成的目录移动或剪切到其他地方,/J生成的原目录还是存在,新地方目录也存在,只是把原目录的所有内容都移动到了新目录中,新目录会变成一般文件夹。旧目录与源目录仍然关联。