题 如何在Windows中创建符号链接?


Windows Vista添加了创建文件和目录的符号链接的功能。如何创建符号链接以及支持它的Windows的当前使用者和服务器版本是什么?


108
2018-05-11 18:06




有人可以突出显示符号链接和快捷方式之间的差异吗? - tomjedrz
@tomjedrz:如果您使用快捷方式,那么打开该快捷方式的任何API都将打开一个包含目标文件/文件夹路径的文本文件。如果您使用链接,则打开该链接的任何API都将打开目标文件/文件夹。 - Afriza N. Arief
与所有人所说的相反,我确认了这一点 有可能的 使用 象征性的联系 在 Windows XP。 (我用它在VM共享文件夹上安装Picasa数据库)。看看吧 schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html并导航到“Windows XP的符号链接”部分。 HTH - Adam Ryczkowski


答案:


您可以使用命令行实用程序创建符号链接 mklink

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

        /D      Creates a directory symbolic link.  Default is a file
                symbolic link.
        /H      Creates a hard link instead of a symbolic link.
        /J      Creates a Directory Junction.
        Link    specifies the new symbolic link name.
        Target  specifies the path (relative or absolute) that the new link
                refers to.

自Windows Vista和Windows Server 2008起,可通过mklink获得符号链接。在Windows XP和Windows Server 2003上,您可以使用

fsutil hardlink create <destination filename> <source filename>

根据 msdn.microsoft,FAT16 / 32和exFAT不支持符号链接。似乎Windows只支持NTFS-Partitions或NTFS-Partitions。未来的Windows操作系统可能会继续支持mklink。

您可以阅读有关此新功能的更多信息 Microsoft TechNet张俊峰的博客 要么 howtogeek.com


106
2018-05-11 18:20



很高兴将David的Technet网址添加到您的条目中以获得完整性。 - Michael Pryor
网站说明,什么是juntion(/ J选项)? - Roy Rico
目录连接一种目录符号链接。 support.microsoft.com/?kbid=205524 - Lara Dougan
自Windows 2000以来,NTFS一直支持链接(具有各种名称),但它们仅在内部使用,最明显的是在SYSVOL域共享中;有些实用程序可用于管理它们,但不是内置的; Vista在默认的Windows安装中引入了MKLINK工具和链接的广泛使用。 - Massimo
很高兴提到 fsutil 来自@ sascha的答案,为Windows Server 2003提供解决方案。 - Phrogz


在Windows XP上,您可以使用 fsutil (内置于操作系统中)以创建硬链接

 fsutil hardlink create c:\foo.txt c:\bar.txt

请记住,只有两者都在同一个驱动器上才能使用fsutil


30
2018-05-11 23:48



好答案。我在WinXP / Win2003上需要mklink,但这解决了我的问题。我通常使用来自sysinternals的junction.exe,但它只处理目录,在这种情况下我需要一个文件链接 - s3v1
遗憾的是,fsutil无法创建符号链接,至少从我在其他地方读过的内容来看。这是一个硬链接,因此不是问题的答案。 - Vlasec


一件小事,如果你使用Powershell,mklink不能直接工作,运行方式如下:

PS C:\d\eclipseInstalls> cmd /k mklink /D antRunner 3.4.2
symbolic link created for antRunner <<===>> 3.4.2

10
2018-06-28 16:19



那应该是/ c,而不是/ k,否则cmd.exe将不会退出。 - dangph


使用 mklink 要么 连接点 从 Sysinternals的 (微软)。一世 相信  mklink 将在Windows 2000及更高版本中工作,但我找不到任何关于它的硬文档。 连接点 适用于Windows 2000及更高版本。


7
2018-05-11 18:10



正如我在上面指出的那样,命令mklink只是Vista和Server 2008及以上版本。


没有在任何答案中看到这个,而是linkd.exe(在Windows 2003资源工具包中) 这里)允许您创建联结,这在Linux中几乎可以像软/硬链接一样运行。可以从Windows 2000及更高版本获得连接,因此只需将linkd.exe复制到目标系统即可。


4
2018-06-04 22:36



请注意,`/ linkd`仅适用于目录,而不适用于文件。 - Phrogz


如果您仍然使用旧版Windows,如XP,2000,2003等,请尝试 NTFS链接

我经常使用它。您将获得一个shell链接右键菜单选项以创建一个连接点。优秀的东西。


3
2018-05-11 19:35



这对我来说非常适合在Windows 2003上创建到另一个驱动器上的文件夹的符号链接。谢谢! - Phil
来自匿名用户的评论,最初编辑成答案:“注意:要使XP工作,必须使用NTFS分区,而不是FAT或FAT32。 aumha.org/win5/a/ntfscvt.php 有关如何转换为NTFS的步骤。“ - squillman


看到 的TechNet 条目。我相信它是Vista / Server 2008及以上的功能。


2
2018-05-11 18:08



很酷,从来不知道这个功能,感谢链接,可能是非常有用的! - Marc-Andre R.


要确保链接正常工作,您可能需要检查服务器的配置。 可以建立链接,但除非您在以下命令中使用symlinkevaluation设置,否则您的链接可能无法正常工作。

fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

也可以看看 http://technet.microsoft.com/en-us/library/cc754077%28v=ws.10%29.aspx。 默认情况下,仅激活本地选项。


1
2018-01-05 22:07