windows7中的“mklink命令”
当前位置:知识管理交流
→『 技术文档交流 』
从 Vista 以后,微软将用户文件和用户的软件配置( AppData ) 明确划分开,并且全部存放在使用者的用户目录下。 Linux早已这样做了,并且在Linux中可将 home 挂载为独立分区,而微软显然还没学到家。用户目录依旧和系统目录一起放在同一分区。 如何将用户目录移动到非系统分区?这是本文的出发点。但本文的重心不在于此,而是 mklink ,一个命令。 一、何为 mklink 如果用过 Linux ,那想必也看到过符号链接(这是一种特殊的文件),也用过 “ ln ” 这个链接命令,mklink 和 ln 的功能几乎一样。 mklink 便是用来创建符号链接的,这个命令并不知名,使用的人也不多。 自从 Vista 以后,微软便在 widows中 偷偷地用起了这个工具 。在用户目录下,可以看到很多很像快捷方式的文件,当然这是隐藏的,但却不能打开,其实这便是符号链接。 >dir C:\Users\wclu /a
C:\Users\wclu 的目录 2009/06/11 11:42 <DIR> . 2009/06/11 11:42 <DIR> .. 2009/06/11 00:04 <DIR> AppData 2009/06/11 00:04 <JUNCTION> Application Data [C:\Users\wclu\AppData\Roaming] 2009/06/11 00:04 <DIR> Contacts 2009/06/11 00:04 <JUNCTION> Cookies [C:\Users\wclu\AppData\Roaming\Microsoft\Windows\Cookies] 2009/06/11 10:05 <DIR> Desktop 2009/06/11 00:04 <DIR> Documents 2009/06/11 02:44 <DIR> Downloads 2009/06/11 00:04 <DIR> Favorites 2009/06/11 00:04 <DIR> Links 2009/06/11 00:04 <JUNCTION> Local Settings [C:\Users\wclu\AppData\Local] 2009/06/11 00:04 <DIR> Music 2009/06/11 00:04 <JUNCTION> My Documents [C:\Users\wclu\Documents] 上述标红色的文件,便是符号链接了(上述文件并非C:\Users\wclu目录下全部文件) 。 Vista/Windows 7使用这些符号链接,是为了兼容XP等系统。 二、mklink 用法 >mklink /? MKLINK [[/D] | [/H] | [/J]] Link Target /D 创建目录符号链接。黙认为文件 注:上述的符号链接等同于Linux中的软链接。 为了试验 mklink 的功能,我在 C分区中创建目录 a ,并在目录中存放文件 1.txt。 创建文件链接 E:\>mklink c:\2.txt c:\a\1.txt 可见为文件创建链接时,符号链接文件的扩展名要和原文件保持一致。 E:\>mklink c:\a\1.txt d:\3.txt E:\>mklink d:\3.txt c:\a\1.txt 可见为文件创建链接时,必须是 “mklink 符号链接文件名 原文件名”的格式。 创建目录链接 虽然d:\a 目录不存在,但依然可以创建链接,很好很强大。但打开链接时,提示错误。 E:\>mklink /d d:\a c:\a E:\>dir d: /a D:\ 的目录
2009/06/11 10:00 <DIR> $RECYCLE.BIN 2009/06/11 13:08 <SYMLINK> 3.txt [c:\a\1.txt] 2009/06/11 13:18 <SYMLINKD> a [c:\a] 2009/06/11 12:54 <DIR> Program Files 2009/06/11 09:58 <DIR> System Volume Information 1 个文件 0 字节 4 个目录 31,089,442,816 可用字节 当把D分区中的链接文件删除时,C分区中的文件和文件夹不受任何影响。 三、mklink /d 与 makelink /j 的异同 细心的同学可以发现,前者是创建目录链接,而后者是创建目录联接。 一字之差,有何分别? 下面分别用这两种方式为同一目录创建链接: E:\>mklink /j d:\a c:\a E:\>mklink /d d:\b c:\a 下面显示D分区中的文件及目录列表: E:\>dir d: /a D:\ 的目录
2009/06/11 10:00 <DIR> $RECYCLE.BIN 2009/06/11 13:33 <SYMLINK> 1.txt [c:\a\1.txt] 2009/06/11 13:34 <JUNCTION> a [c:\a] 2009/06/11 13:35 <SYMLINKD> b [c:\a] 2009/06/11 12:54 <DIR> Program Files 2009/06/11 09:58 <DIR> System Volume Information 1 个文件 0 字节 5 个目录 31,089,442,816 可用字节 mklink 不加参数或加参数 /d 时,创建的链接文件为<SYMLINK>型(<SYMLINKD>代表链接到目录)。 当加参数 /j 时,只能为目录创建联接,并且创建的联接文件为<JUNCTION>型,两种类型的链接文件有显著区别: 从最开始的 “ >dir C:\Users\wclu /a ” 可以看出,微软自家使用的都是<JUNCTION>型,至于为何,留待考证。 四、链接文件的特性 符号链接文件自身不能被 “复制”(只能通过特殊方法才能复制) >xcopy /? /B 对照链接目标复制符号链接本身 /* d:\1.txt 为<SYMLINK>型符号链接 */ /* d:\a 为<JUNCTION>型符号链接 */ /* d:\b 为<SYMLINKD>型符号链接 */ E:\>dir e: /a E:\ 的目录
2009/06/11 10:00 <DIR> $RECYCLE.BIN 2009/06/11 13:33 <SYMLINK> 1.txt [c:\a\1.txt] 2009/06/11 13:34 <DIR> a 2009/06/11 13:35 <SYMLINKD> b [c:\a] 2009/06/11 09:58 <DIR> System Volume Information 1 个文件 0 字节 4 个目录 31,362,203,648 可用字节 可见采用xcopy命令并上参数 /B ,可以成功复制 <SYMLINK> 型的符号链接文件,而<JUNCTION>型链接却不能被复制。 符号链接文件的透明性 该文章在 2012/12/31 10:20:16 编辑过 |
关键字查询
相关文章
正在查询... |