[20171230]windows mklink.txt
--//别人的系统,原来的D盘磁盘空间不足,加入新的磁盘,想把原来的D的数据移动到E盘,而通过D盘依旧可以访问,
--//问如何做?实际上在windows下也存在类似linux的ln命令,很容易实现这样的需求.我看了一个命令语法.如下:
D:\temp>mklink
创建符号链接。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 创建目录符号链接。默认为文件
符号链接。
/H 创建硬链接,而不是符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径
(相对或绝对)。
--//我的感觉/D /J 好像一样的,不知道两种区别在哪里.检索如下:
https://baike.baidu.com/item/mklink/566760?fr=aladdin
目录符号链接与目录连接点的区别
目录符号链接(/D)与目录连接点(/J)非常相似,但是本质是不同的。目录符号链接依旧是符号链接,是指向目录的符号链接,而目录连接
点不属于符号链接。
目录符号链接允许 Target 使用相对路径,当使用相对路径时创建目录符号链接之后,如果移动了符号链接文件,操作系统将无法再找到
原来的目标。
目录连接点只允许 Target 使用绝对路径,当创建目录连接点时,如果传入的参数是相对路径,mklink 命令会自动将相对路径补全为绝
对路径。
当目录符号链接使用绝对路径时,其行为与目录连接点完全一样。
此外,目录符号链接还可以指定 SMB 远程网络中的路径,而目录连接点不可以。
--//自己做一些测试:
d:\temp>dir
驱动器 D 中的卷没有标签。
卷的序列号是 0006-A37E
d:\temp 的目录
2017/12/30 21:11 <DIR> .
2017/12/30 21:11 <DIR> ..
2017/11/24 22:01 <DIR> app
2017/12/31 20:11 <DIR> test
0 个文件 0 字节
4 个目录 41,630,515,200 可用字节
--//在test目录建立文件d.txt
d:\temp>mklink /D e:\test test
为 e:\test <<===>> test 创建的符号链接
d:\temp>dir e:\ | grep test
2017/12/31 20:12 <SYMLINKD> test [test]
d:\temp>dir e:\test
驱动器 E 中的卷没有标签。
卷的序列号是 000C-24BB
e:\test 的目录
找不到文件
--//为什么.
d:\temp>rmdir e:\test
--//继续:
d:\temp>mklink /D e:\test .\test
为 e:\test <<===>> .\test 创建的符号链接
d:\temp>dir e:\ | grep test
2017/12/31 20:16 <SYMLINKD> test [.\test]
d:\temp>dir e:\test\
驱动器 E 中的卷没有标签。
卷的序列号是 000C-24BB
e:\test 的目录
找不到文件
--//继续:
d:\temp>mklink /D d:\test .\test
为 d:\test <<===>> .\test 创建的符号链接
d:\temp>dir d:\test
驱动器 D 中的卷没有标签。
卷的序列号是 0006-A37E
d:\test 的目录
找不到文件
--//真不知道这个/D参数什么用.
d:\temp>rmdir d:\test
d:\temp>mklink /D e:\test d:\temp\test
为 e:\test <<===>> d:\temp\test 创建的符号链接
d:\temp>dir e: | grep test
2017/12/31 20:20 <SYMLINKD> test [d:\temp\test]
d:\temp>dir e:\test\
驱动器 E 中的卷没有标签。
卷的序列号是 000C-24BB
e:\test 的目录
2017/12/31 20:11 <DIR> .
2017/12/31 20:11 <DIR> ..
2017/12/31 20:11 18 d.txt
1 个文件 18 字节
2 个目录 41,630,515,200 可用字节
--//只有这样才正常使用,相对路径如何用.只有中括号的里面目录存在才是ok的.
d:\temp>rmdir e:\test
d:\temp>mklink /D d:\temp\aaaa test
为 d:\temp\aaaa <<===>> test 创建的符号链接
d:\temp>dir
驱动器 D 中的卷没有标签。
卷的序列号是 0006-A37E
d:\temp 的目录
2017/12/31 20:23 <DIR> .
2017/12/31 20:23 <DIR> ..
2017/12/31 20:23 <SYMLINKD> aaaa [test]
2017/11/24 22:01 <DIR> app
2017/12/31 20:11 <DIR> test
0 个文件 0 字节
5 个目录 41,630,515,200 可用字节
d:\temp>dir aaaa
驱动器 D 中的卷没有标签。
卷的序列号是 0006-A37E
d:\temp\aaaa 的目录
2017/12/31 20:11 <DIR> .
2017/12/31 20:11 <DIR> ..
2017/12/31 20:11 18 d.txt
1 个文件 18 字节
2 个目录 41,630,515,200 可用字节
--//真不知道ms为什么要创建这个参数,意义不大.到这里我才明白/D参数的含义.
d:\temp>mklink /D e:\ttt toad
为 e:\ttt <<===>> toad 创建的符号链接
--//最后的参数实际上不一定在本地目录,ms的相对是针对前面的Link.我自己理解错误.
d:\temp>dir e: | egrep "toad|ttt"
2013/07/16 22:30 <DIR> toad
2017/12/31 20:29 <SYMLINKD> ttt [toad]
d:\temp>dir e:\ttt
驱动器 E 中的卷没有标签。
卷的序列号是 000C-24BB
e:\ttt 的目录
2013/07/16 22:30 <DIR> .
2013/07/16 22:30 <DIR> ..
2011/10/10 09:52 145,096,704 Toad .dat
2013/07/16 22:32 <DIR> Toad for Oracle 11
2011/10/10 09:52 52,469 Toad for Oracle 11.exe
3 个文件 145,149,209 字节
3 个目录 35,444,133,888 可用字节
--//实际上这个就是windows的快捷方式,只不过使用命令行实现罢了.
--//别人的系统,原来的D盘磁盘空间不足,加入新的磁盘,想把原来的D的数据移动到E盘,而通过D盘依旧可以访问,
--//问如何做?实际上在windows下也存在类似linux的ln命令,很容易实现这样的需求.我看了一个命令语法.如下:
D:\temp>mklink
创建符号链接。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 创建目录符号链接。默认为文件
符号链接。
/H 创建硬链接,而不是符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径
(相对或绝对)。
--//我的感觉/D /J 好像一样的,不知道两种区别在哪里.检索如下:
https://baike.baidu.com/item/mklink/566760?fr=aladdin
目录符号链接与目录连接点的区别
目录符号链接(/D)与目录连接点(/J)非常相似,但是本质是不同的。目录符号链接依旧是符号链接,是指向目录的符号链接,而目录连接
点不属于符号链接。
目录符号链接允许 Target 使用相对路径,当使用相对路径时创建目录符号链接之后,如果移动了符号链接文件,操作系统将无法再找到
原来的目标。
目录连接点只允许 Target 使用绝对路径,当创建目录连接点时,如果传入的参数是相对路径,mklink 命令会自动将相对路径补全为绝
对路径。
当目录符号链接使用绝对路径时,其行为与目录连接点完全一样。
此外,目录符号链接还可以指定 SMB 远程网络中的路径,而目录连接点不可以。
--//自己做一些测试:
d:\temp>dir
驱动器 D 中的卷没有标签。
卷的序列号是 0006-A37E
d:\temp 的目录
2017/12/30 21:11 <DIR> .
2017/12/30 21:11 <DIR> ..
2017/11/24 22:01 <DIR> app
2017/12/31 20:11 <DIR> test
0 个文件 0 字节
4 个目录 41,630,515,200 可用字节
--//在test目录建立文件d.txt
d:\temp>mklink /D e:\test test
为 e:\test <<===>> test 创建的符号链接
d:\temp>dir e:\ | grep test
2017/12/31 20:12 <SYMLINKD> test [test]
d:\temp>dir e:\test
驱动器 E 中的卷没有标签。
卷的序列号是 000C-24BB
e:\test 的目录
找不到文件
--//为什么.
d:\temp>rmdir e:\test
--//继续:
d:\temp>mklink /D e:\test .\test
为 e:\test <<===>> .\test 创建的符号链接
d:\temp>dir e:\ | grep test
2017/12/31 20:16 <SYMLINKD> test [.\test]
d:\temp>dir e:\test\
驱动器 E 中的卷没有标签。
卷的序列号是 000C-24BB
e:\test 的目录
找不到文件
--//继续:
d:\temp>mklink /D d:\test .\test
为 d:\test <<===>> .\test 创建的符号链接
d:\temp>dir d:\test
驱动器 D 中的卷没有标签。
卷的序列号是 0006-A37E
d:\test 的目录
找不到文件
--//真不知道这个/D参数什么用.
d:\temp>rmdir d:\test
d:\temp>mklink /D e:\test d:\temp\test
为 e:\test <<===>> d:\temp\test 创建的符号链接
d:\temp>dir e: | grep test
2017/12/31 20:20 <SYMLINKD> test [d:\temp\test]
d:\temp>dir e:\test\
驱动器 E 中的卷没有标签。
卷的序列号是 000C-24BB
e:\test 的目录
2017/12/31 20:11 <DIR> .
2017/12/31 20:11 <DIR> ..
2017/12/31 20:11 18 d.txt
1 个文件 18 字节
2 个目录 41,630,515,200 可用字节
--//只有这样才正常使用,相对路径如何用.只有中括号的里面目录存在才是ok的.
d:\temp>rmdir e:\test
d:\temp>mklink /D d:\temp\aaaa test
为 d:\temp\aaaa <<===>> test 创建的符号链接
d:\temp>dir
驱动器 D 中的卷没有标签。
卷的序列号是 0006-A37E
d:\temp 的目录
2017/12/31 20:23 <DIR> .
2017/12/31 20:23 <DIR> ..
2017/12/31 20:23 <SYMLINKD> aaaa [test]
2017/11/24 22:01 <DIR> app
2017/12/31 20:11 <DIR> test
0 个文件 0 字节
5 个目录 41,630,515,200 可用字节
d:\temp>dir aaaa
驱动器 D 中的卷没有标签。
卷的序列号是 0006-A37E
d:\temp\aaaa 的目录
2017/12/31 20:11 <DIR> .
2017/12/31 20:11 <DIR> ..
2017/12/31 20:11 18 d.txt
1 个文件 18 字节
2 个目录 41,630,515,200 可用字节
--//真不知道ms为什么要创建这个参数,意义不大.到这里我才明白/D参数的含义.
d:\temp>mklink /D e:\ttt toad
为 e:\ttt <<===>> toad 创建的符号链接
--//最后的参数实际上不一定在本地目录,ms的相对是针对前面的Link.我自己理解错误.
d:\temp>dir e: | egrep "toad|ttt"
2013/07/16 22:30 <DIR> toad
2017/12/31 20:29 <SYMLINKD> ttt [toad]
d:\temp>dir e:\ttt
驱动器 E 中的卷没有标签。
卷的序列号是 000C-24BB
e:\ttt 的目录
2013/07/16 22:30 <DIR> .
2013/07/16 22:30 <DIR> ..
2011/10/10 09:52 145,096,704 Toad .dat
2013/07/16 22:32 <DIR> Toad for Oracle 11
2011/10/10 09:52 52,469 Toad for Oracle 11.exe
3 个文件 145,149,209 字节
3 个目录 35,444,133,888 可用字节
--//实际上这个就是windows的快捷方式,只不过使用命令行实现罢了.