Как создать символическую ссылку в Windows?

113

В Windows Vista добавлена ​​возможность создавать символические ссылки на файлы и каталоги. Как создать символическую ссылку и какие текущие потребительские и серверные версии Windows поддерживают ее?

cowgod
источник
6
Может кто-то выделить различия между символической ссылкой и ярлыком?
Tomjedrz
1
@tomjedrz: если вы используете ярлык, любой API, открывающий этот ярлык, откроет текстовый файл, содержащий путь к целевому файлу / папке. если вы используете ссылки, любой API, открывающий эту ссылку, откроет целевой файл / папку.
Afriza N. Arief
2
Вопреки сказанному всеми, я подтверждаю, что в Windows XP можно использовать символические ссылки . (Я использую его для установки базы данных Picasa в общую папку виртуальной машины). Просто взгляните на schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html и перейдите в раздел «Символические ссылки для Windows XP». HTH
Адам Рычковски

Ответы:

109

Вы можете создать символическую ссылку с помощью утилиты командной строки 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.

Символьные ссылки через mklink доступны начиная с Windows Vista и Windows Server 2008. В Windows XP и Windows Server 2003 вы можете использовать

fsutil hardlink create <destination filename> <source filename>

Согласно msdn.microsoft , символические ссылки НЕ поддерживаются на FAT16 / 32 и exFAT. Кажется, что Windows поддерживает их только с NTFS-разделов. Будущие операционные системы Windows, вероятно, продолжат поддержку mklink.

Вы можете прочитать дополнительную информацию об этой новой функции в Microsoft TechNet , блоге Junfeng Zhang или howtogeek.com .

cowgod
источник
Было бы неплохо добавить URL-адрес Дэвида Technet к вашей записи для полноты.
Майкл Прайор
заметка на сайте, что такое юнион (опция / J)?
Рой Рико
A Directory Junction - тип символической ссылки на каталог. support.microsoft.com/?kbid=205524
Лара Дуган
1
NTFS поддерживает ссылки (с различными именами) начиная с Windows 2000, но они использовались только для внутренних целей, особенно в общих ресурсах домена SYSVOL; некоторые утилиты были доступны для управления ими, но не были встроенными; Vista представила инструмент MKLINK и широкое использование ссылок при установке Windows по умолчанию.
Массимо
2
Было бы неплохо упомянуть fsutilответ @ sascha ниже, чтобы предоставить решение для Windows Server 2003.
Phrogz
30

В Windows XP вы можете использовать fsutil(встроенный в ОС) для создания жесткой ссылки

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

Имейте в виду, что fsutil будет работать, только если оба находятся на одном диске

saschabeaumont
источник
2
Хороший ответ. Я нахожусь на WinXP / Win2003 и мне нужен mklink, но это решило мою проблему для меня. Я обычно использую junction.exe из sysinternals, но он обрабатывает только каталоги, и в этом случае мне нужна была ссылка на файл
s3v1
Жаль, что символическая ссылка не может быть создана с помощью fsutil, по крайней мере из того, что я читал в другом месте. Это жесткая ссылка и, следовательно, не ответ на вопрос.
Власек
10

Одна маленькая вещь, если вы используете Powershell, mklink не работает напрямую, запустите его так:

PS C:\d\eclipseInstalls> cmd /k mklink /D antRunner 3.4.2
symbolic link created for antRunner <<===>> 3.4.2
Деннис Уильямсон
источник
1
Это должен быть / c, а не / k, иначе cmd.exe не выйдет.
dangph
7

Используйте mklink или junction от Sysinternals (Microsoft). Я полагаю, что mklink будет работать в Windows 2000 и более поздних версиях, но я не могу найти никакой трудной документации по этому вопросу. Соединение для Windows 2000 и выше.

user2287
источник
1
Команда mklink - это Vista и Server 2008 и выше, как я уже говорил выше.
4

Не видел этого ни в одном из ответов, но linkd.exe (в комплекте ресурсов Windows 2003 здесь ) позволяет создавать переходы, которые в значительной степени функционировать в качестве мягкой / жесткой связи происходит в Linux. Соединения доступны с Windows 2000 и выше, поэтому просто скопируйте linkd.exe в целевую систему, и она должна работать.

romandas
источник
1
Обратите внимание, что `/ linkd` предназначен только для каталогов, а не для файлов.
Phrogz
3

Если вы все еще используете старую Windows, такую ​​как XP, 2000, 2003 и т. Д., Попробуйте NTFS Link .

Я использую это много. Вы получаете ссылку оболочки правой кнопкой мыши, чтобы создать точку соединения. Отличный материал.

Стюарт Робинсон
источник
Это отлично работает для меня в Windows 2003 для создания символической ссылки на папку на другом диске. Спасибо!
Фил
Комментарий от анонимного пользователя, первоначально отредактированный в ответе: «Примечание. Чтобы XP работала, она должна использовать раздел NTFS, а не FAT или FAT32. См. Aumha.org/win5/a/ntfscvt.php, чтобы узнать, как конвертировать в NTFS. "
squillman
2

Смотрите запись TechNet . Я считаю, что это Vista / Server 2008 и выше.


источник
Круто, никогда не знал об этой функции раньше, спасибо за ссылку, может быть очень полезным!
Марк-Андре Р.
1

Чтобы убедиться, что ваши ссылки работают, вы можете проверить конфигурацию вашего сервера. Ссылки могут быть сделаны, но если вы не используете параметр 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 . По умолчанию активируются только локальные опции.

user906489
источник