基本介绍
mklink
是 Windows 中用于创建符号链接(symlink)、硬链接(hard link)和目录联接(directory junction)的命令。以下是一些常用的 mklink
命令以及如何使用它们创建文件夹链接的介绍。
基本语法
1 | mklink [options] <Link> <Target> |
<Link>
是要创建的链接的名称。<Target>
是链接所指向的目标文件或文件夹。
常用选项
/D
- 创建一个目录符号链接。默认情况下,mklink
创建的是文件符号链接,所以如果要创建一个指向目录的符号链接,需要使用这个选项。/H
- 创建一个硬链接,而不是符号链接。硬链接只能指向同一分区上的文件。/J
- 创建一个目录联接。这是一个特殊类型的符号链接,专门用于目录。
创建文件夹符号链接
假设有一个目标文件夹 C:\OriginalFolder
,如果想在 C:\NewFolderLink
位置创建一个指向它的符号链接,使用以下命令:
1 | mklink /D C:\NewFolderLink C:\OriginalFolder |
创建文件夹硬链接
硬链接不能用于目录,只能用于文件。所以如果需要创建目录的链接,建议使用符号链接或目录联接。
创建目录联接
如果希望创建一个目录联接,使用以下命令:
1 | mklink /J C:\NewFolderLink C:\OriginalFolder |
示例
-
创建指向目录
C:\Users\YourName\Documents\MyFolder
的符号链接:1
mklink /D C:\LinkToMyFolder C:\Users\YourName\Documents\MyFolder
-
创建指向目录
D:\Data\Projects
的目录联接:1
mklink /J C:\ProjectsLink D:\Data\Projects
注意事项
- 确保在命令提示符(cmd)中以管理员身份运行
mklink
命令,因为创建符号链接需要管理员权限。 - 使用符号链接和目录联接时,请注意目标路径的有效性。如果目标路径不存在或不可访问,链接将无法正常工作。
通过 mklink
命令,可以方便地在不同目录之间创建快捷方式,简化文件和目录的管理。
\D
和\J
的区别
/D
和 /J
是 mklink
命令中用于创建不同类型目录链接的选项,它们的主要区别如下:
/D
- 创建目录符号链接 (Symbolic Link)
- 符号链接(symlink)是一个引用指向另一个文件或目录的路径。
- 符号链接可以跨不同的文件系统分区使用,也可以指向网络路径。
- 符号链接可以指向不存在的目标(当目标路径存在时链接才会有效)。
- 删除符号链接不会影响目标文件或目录。
示例:
1 | mklink /D C:\LinkToFolder C:\OriginalFolder |
这个命令创建一个符号链接 C:\LinkToFolder
,它指向 C:\OriginalFolder
。
/J
- 创建目录联接 (Directory Junction)
- 目录联接(junction)是 Windows 的 NTFS 文件系统中的一种特殊类型的符号链接。
- 目录联接只能用于本地目录,不能用于网络路径。
- 目录联接仅适用于目录,不适用于单个文件。
- 目录联接通常比符号链接更兼容一些旧的 Windows 应用程序。
- 删除目录联接不会影响目标目录中的文件。
示例:
1 | mklink /J C:\JunctionToFolder C:\OriginalFolder |
这个命令创建一个目录联接 C:\JunctionToFolder
,它指向 C:\OriginalFolder
。
总结
- 符号链接(使用
/D
)更灵活,可以指向任意文件或目录,并且可以跨分区和网络使用。 - 目录联接(使用
/J
)更局限,只能用于本地目录,但可能在一些场景下有更好的兼容性。
选择使用 /D
还是 /J
取决于具体需求。如果需要更高的灵活性和跨分区支持,选择 /D
;如果主要在本地文件系统中操作目录并且需要兼容一些旧应用程序,选择 /J
。
查看文件/文件夹链接类型
要查看一个链接的类型是 /D
(符号链接)还是 /J
(目录联接),可以通过以下几种方法来进行检查:
使用 dir
命令
- 打开命令提示符(cmd)。
- 导航到包含链接的目录。
- 输入
dir
命令。
在 dir
命令的输出中:
- 符号链接会显示为
<SYMLINKD>
。 - 目录联接会显示为
<JUNCTION>
。
示例:
1 | C:\> dir |
输出可能类似于:
1 | 2024-05-30 10:30 AM <DIR> . |
在这里,LinkToFolder
是符号链接,JunctionToFolder
是目录联接。
使用 fsutil
命令
- 打开命令提示符(cmd)以管理员身份运行。
- 使用
fsutil reparsepoint query
命令。
示例:
1 | fsutil reparsepoint query C:\LinkToFolder |
如果这是一个符号链接,输出会包含类似 Reparse Tag Value: 0xA000000C
的信息。
如果这是一个目录联接,输出会包含类似 Reparse Tag Value: 0xA0000003
的信息。
使用 PowerShell
- 打开 PowerShell。
- 导航到包含链接的目录。
- 使用
Get-Item
cmdlet。
示例:
1 | (Get-Item C:\LinkToFolder).LinkType |
输出会显示 SymbolicLink
或 Junction
,分别表示符号链接和目录联接。
示例综合
假设有两个链接:C:\LinkToFolder
和 C:\JunctionToFolder
。使用上述方法,可以轻松地确定它们的类型。
- 在命令提示符中运行
dir
命令,可以看到LinkToFolder
是符号链接 (<SYMLINKD>
),而JunctionToFolder
是目录联接 (<JUNCTION>
)。 - 使用
fsutil reparsepoint query
命令可以进一步确认它们的类型。 - 在 PowerShell 中使用
Get-Item
cmdlet 也可以查看链接的类型。
通过这些方法,可以准确地确定一个链接是符号链接还是目录联接。