Jak utworzyć dowiązanie symboliczne ze ścieżką względną za pomocą mklink?

25

Ta strona sugeruje, że można tworzyć dowiązania symboliczne przy użyciu ścieżek względnych mklink.

Próbowałem różnych sposobów tworzenia względnych dowiązań symbolicznych, ale zawsze otrzymałem ścieżkę absolutną.

Jak to jest zrobione?

paradroid
źródło
MSDN ma dziwny sposób na wyjaśnienie tego. Trudno mi było zrozumieć, jak utworzyć dowiązanie symboliczne, ponieważ nie ma rzeczywistych przykładów.
iglvzx
Jedynym powodem, dla którego znam ten „dziwny sposób”, jest to, że MSDOS używa tej metody.
surfasb
Nie rozumiem, dlaczego moje pytanie ma teraz 20 000 wyświetleń, gdy problem był spowodowany błędem w TCC / LE. Łącza symboliczne są zazwyczaj względnie domyślnie względne.
paradroid

Odpowiedzi:

38

Łącza symboliczne są domyślnie względne. Musisz jawnie napisać literę dysku, aby dowolna część łącza była bezwzględna.

Ogólna składnia dowiązania symbolicznego to:

mklink link destination

Tak więc, aby utworzyć względne dowiązanie symboliczne: linkbędzie ścieżką względem twojego katalogu roboczego i destinationbędzie ścieżką względem link.

Przykłady:

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

Tworzy to dowiązanie symboliczne, dla link.txtktórego wskazuje destination.txtjeden folder w górę.

Możesz się poruszać link.txt, a zawsze będzie wskazywał destination.txtjeden folder w górę.

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

To tworzy symboliczne łącze C:\A\Link.txtdlaC:\Destination.txt

iglvzx
źródło
To jest to. Zamiast zaczynać się od litery dysku lub ukośnika odwrotnego, wystarczy rozpocząć od katalogu. np. mklink destination.txt "documentation\readme.txt"wskaże folder podrzędny o nazwie documetation ”i plik w tym folderze o nazwie * readme.txt .
surfasb
@surfasb, @iglvzx: Na początku byłem zdezorientowany, ponieważ właśnie tego próbowałem. Ale kiedy oboje potwierdzacie, że to działa, zdałem sobie sprawę, że to działa CMD, ale nie w tym TCC/LE, czego używałem. Dziwi mnie, że zmienia (rozszerza) argumenty ścieżki dla programów zewnętrznych.
paradroid
@surfasb: Ten problem z TCC / LE został naprawiony w nowej wersji 13, ale zdarzyło się to w wersji 12.11.76, z której korzystałem.
paradroid
2
@paradroid: Cieszę się, że to działa. Czule wspominam starą starą wersję TCC. Jak długo go używasz? Z drugiej strony nie, tak, niuanse wyliczenia ŚCIEŻKI zaskakują mój umysł. I obowiązkowy [post na blogu] :( blogs.msdn.com/b/oldnewthing/archive/2005/11/22/495740.aspx ) dotyczący tego, w jaki sposób decyzje podejmowane przez MS-DOS dotyczące zgodności wciąż wpływają na nas dzisiaj.
surfasb