一、应用场景
①某应用无法修改下载文件的保存位置,而是默认在本应用下创建一个文件夹以保存下载的文件。如何使该文件夹内下载的文件,存储到别的硬盘或其他文件夹下,而应用程序无法得知。
二、原理(该功能在ntfs文件系统上才能使用。)
(win2000,xp,server 2003的相应功能是linkd,这里只说mklink)
vista及以上系统的mklink命令可以创建文件夹的链接(像文件夹的映射)。因是从底层实现文件夹链接,所以这个链接是对应用程序透明的。
三、使用步骤
1.例1
一个文件夹叫C:Program Files,但c盘空间不多想把一些应用程序转移到d盘,但直接剪切去肯定不行,应用程序会报错,所以
——首先把C:\Program Files,文件夹整个剪切到d盘,再执行命令:
mklink /j "C:\Program Files" "D:\Program Files" # 路径双引号
效果:
c盘下出现一个带快捷方式图标的文件夹,全称"C:Program Files'"。双击转到D:\Program Files。
原理解释:
当应用程序按照路径读取C:Program Files里的文件时,相比于直接剪切,发现原路径下仍然有C:Program Files及其包含的其它文件,因此不影响程序运行。
例2:
目的:
已有程序,将浏览器下载图片自动保存在“D:\Downloads\Images\桌面”文件夹中,欲将该“桌面”文件夹实际指向电脑的桌面,从而实时在桌面显示下载的图片。
步骤:
首先,在“下载”文件夹里新建一个名为“桌面”的快捷方式,然后将目标指向实际的“桌面文件夹”。
然后,快捷键 Win+R,输入 cmd,在打开的窗口里输入下面的代码
mklink /d "D:\Downloads\Images\桌面" "D:\Desktop"
# mklink /d 快捷键路径 实际路径
四、mklink建立链接分类
1.软链接(/j)
- 是绝对路径链接
如:创建c:\1文件夹以软链接去链接tmp文件夹。
含义:c:\1文件夹,指向的是c:\data\tmp这样的绝对路径。
区别:若将c:\1文件夹移动到d盘,则d:\1与c:\data\tmp文件夹之间的链接仍然成立。
2.符号链接(/d)
- 是相对路径链接
如:创建c:\2文件夹以符号链接去链接c:\data\tmp文件夹。
含义:以c:\2文件夹自身为起点,搜寻自身(文件夹2)的同级文件夹——data,后继续向下,找到tmp文件夹→达成目标。
区别:若将c:\2文件夹移动到d盘,则d:\2与c:\data\tmp文件夹之间的链接不成立。
因为此时以d:\2为起点,检索同级文件夹data找不到。
3.硬链接(/h)(适用于文件)
文件的硬链接是对文件创建的链接。
比如:对c:data1.txt创建链接c:data2.txt,那么这两个文件就是同一个文件的两个等价别名。相当于是指向同一个硬盘存储空间的两个指针,删除其中任何一个都不影响另一个文件。(但限制就是这种链接不能跨磁盘分区)。