Как сделать символическую ссылку с относительным путем, используя mklink?

25

Эта веб-страница подразумевает, что можно создавать символические ссылки с использованием относительных путей mklink.

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

Как это сделать?

Paradroid
источник
У MSDN есть странный способ объяснить это. Мне было трудно понять, как сделать символическую ссылку, потому что реальных примеров нет.
iglvzx
Единственная причина, по которой я знаю этот «странный путь», заключается в том, что MSDOS использует этот метод.
Surfasb
Я не понимаю, почему мой вопрос имеет 20 000 просмотров сейчас, когда проблема была вызвана ошибкой в ​​TCC / LE. Символьные ссылки обычно делаются относительными по умолчанию.
paradroid

Ответы:

38

Символические ссылки являются относительными по умолчанию. Вы должны явно написать букву диска, чтобы сделать любую часть ссылки абсолютной.

Общий синтаксис для символической ссылки:

mklink link destination

Итак, чтобы создать относительную символическую ссылку: linkэто будет путь относительно вашего рабочего каталога , и destinationэто будет путь относительно link.

Примеры:

1. mklink link.txt ..\destination.txt

Это создает символическую ссылку, на link.txtкоторую указывает destination.txtодна папка вверх.

Вы можете перемещаться link.txt, и он всегда будет указывать на destination.txtодну папку вверх.

2. C:\>mklink A\Link.txt ..\Destination.txt

Это создает символическую ссылку C:\A\Link.txtдляC:\Destination.txt

iglvzx
источник
Это оно. Вместо того, чтобы начинаться с буквы диска или обратной косой черты, вы просто начинаете с каталога. Например, mklink destination.txt "documentation\readme.txt"укажет на дочернюю папку с именем documentmetation "и файл в этой папке с именем * readme.txt .
surfasb
@surfasb, @iglvzx: Сначала я был сбит с толку, потому что это именно то, что я пытался. Но поскольку вы оба подтверждаете, что это работает, я понял, что это работает CMD, но не в том TCC/LE, что я использовал. Я удивлен, что он изменяет (расширяет) аргументы пути для внешних программ.
Парадроид 27.11.11
@surfasb: эта проблема с TCC / LE была исправлена ​​с новым v13, но произошла с 12.11.76, который я использовал.
Парадроид 28.11.11
2
@paradroid: я рад, что это работает. Я с любовью помню старую старую версию TCC. Как давно вы используете это сейчас? С другой стороны, да, нюансы перечисления PATH поражают меня. И обязательное [сообщение в блоге] :( blogs.msdn.com/b/oldnewthing/archive/2005/11/22/495740.aspx ) о том, как прошлые решения MS-DOS относительно совместимости все еще влияют на нас сегодня.
surfasb