背景
协同的两个程序,上下游对于文件路径处理逻辑不一致,上下游都不太愿意修改代码逻辑,在Linux上可以使用软链接轻松调和矛盾,但是Windows上好像只是用过快捷方式,结果一番查找资料发现mklink可以完美解决
首先是查看命令帮助
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 创建目录符号链接。默认为文件
符号链接。
/H 创建硬链接而非符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径
(相对或绝对)。
本次只需要使用软链接就可以完美解决以上问题,其他参数未进行展开,以下为操作过程(需要使用管理员权限执行),创建完成后完全可以通过图形界面去验证确认(和Linux的软链接效果一致)
c:\Users\test>touch a.txt
'touch' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
c:\Users\test>echo "1">a.txt
c:\Users\test>ls
'ls' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
c:\Users\test>dir
驱动器 C 中的卷没有标签。
卷的序列号是 54E1-C44B
c:\Users\test 的目录
23/11/16 09:14 <DIR> .
23/11/16 09:14 <DIR> ..
23/11/16 09:14 5 a.txt
1 个文件 5 字节
2 个目录 155,928,719,360 可用字节
c:\Users\test>cd ..
c:\Users>ls
'ls' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
c:\Users>dir
驱动器 C 中的卷没有标签。
卷的序列号是 54E1-C44B
c:\Users 的目录
23/11/16 09:14 <DIR> .
23/08/22 15:58 <DIR> ..
23/11/16 09:14 <DIR> test
c:\Users>mklink /d target test
为 target <<===>> test 创建的符号链接
c:\Users>dir
驱动器 C 中的卷没有标签。
卷的序列号是 54E1-C44B
c:\Users 的目录
23/11/16 09:14 <DIR> .
23/08/22 15:58 <DIR> ..
22/03/23 22:16 <DIR> log
23/11/16 09:14 <SYMLINKD> target [test]
23/11/16 09:14 <DIR> test
c:\Users>cd target
c:\Users\target>dir
驱动器 C 中的卷没有标签。
卷的序列号是 54E1-C44B
c:\Users\target 的目录
23/11/16 09:14 <DIR> .
23/11/16 09:14 <DIR> ..
23/11/16 09:14 5 a.txt
1 个文件 5 字节
2 个目录 155,928,416,256 可用字节
c:\Users\target>echo 2 >b.txt
c:\Users\target>cd ..
c:\Users>cd test
c:\Users\test>dir
驱动器 C 中的卷没有标签。
卷的序列号是 54E1-C44B
c:\Users\test 的目录
23/11/16 09:15 <DIR> .
23/11/16 09:14 <DIR> ..
23/11/16 09:14 5 a.txt
23/11/16 09:15 4 b.txt
2 个文件 9 字节
2 个目录 155,928,125,440 可用字节
这部分成功之后就可以直接使用图形化界面进行操作验证了
23/11/16 09:14 target [test]