Jak mogę usunąć dowiązanie symboliczne?

322

Utworzyłem dowiązanie symboliczne za pomocą mklink. Teraz muszę to zmienić, ale nie mogę wymyślić, jak go usunąć, aby poprawnie go odtworzyć.

Ben V.
źródło

Odpowiedzi:

557

Bądź bardzo ostrożny.

Jeśli masz dowiązanie symboliczne, które jest katalogiem (utworzonym mklink /d), wówczas użycie delspowoduje usunięcie wszystkich plików w katalogu docelowym (katalogu, do którego prowadzi łącze), a nie tylko łącze.

ROZWIĄZANIE: rmdir z drugiej strony usunie tylko link do katalogu, a nie to, na co wskazuje link.

eddyq
źródło
103
Po przypadkowym wykonaniu tej czynności (usunięciu całej zawartości folderu docelowego) jest to ważna wskazówka.
Simon Gillbee,
4
Ta odpowiedź nie jest do końca dokładna. Delusuwa pliki, a nie foldery. Dlatego nie użyłbyś deldo usunięcia linku.
AMissico,
12
Ale nie używaj rmdirw PowerShell. Zawiń to w cmdpierwszej kolejności. Zobacz moją odpowiedź poniżej ...
northben
4
A jeśli usunę go za pomocą Eksploratora Windows?
Cheung,
8
Tam pracownicy Microsoft idą znowu, próbując zrujnować mi życie, karierę i system operacyjny Windows.
ThorSummoner,
62

Aby usunąć utworzone w mklink /dnim dowiązania symboliczne, wystarczy usunąć dowiązanie symboliczne w Eksploratorze.

ddelrio1986
źródło
27
+1 za informowanie ludzi, że zapisanie linku symbolicznego za pomocą Eksploratora Windows jest zapisywane.
AMissico,
3
Jest poprawna. Ciągle to robię. Właśnie przetestowałem to teraz.
ddelrio1986
2
To również zadziałało dla mnie. usunąłem łącze, a nie folder źródłowy, z którym był połączony. może to haczyk.
R Hughes
3
Można go bezpiecznie usunąć, klikając prawym przyciskiem myszy -> Usuń. NIE powoduje to usunięcia połączonego folderu.
Hexo
mklink / d Nie działało dla mnie w systemie Windows 7. Być może korzystałem ze starej wersji
abelito
47

W przypadku dowiązania symbolicznego do pliku użyj del. Aby utworzyć dowiązanie symboliczne do katalogu utworzonego za pomocą mklink /d, użyj rmdir.

George V. Reilly
źródło
5
Ostrzeżenie: „del” usunie plik, a nie tylko link.
WoodenKitty,
6
Ostrzeżenie od @Tristan jest nieprawidłowe, ta odpowiedź jest dokładna. Testowane w
systemie
1
W systemie Windows 7 SP1 (64-bitowym) dowiązanie symboliczne wskazujące albo plik (np. Utworzony za pomocą MKLINK) lub katalog (MKLINK / D) można usunąć w Eksploratorze Windows, używając zwykłej opcji „usuń” GUI systemu Windows , bez usuwania celu. Nawet JUNCTION (np. Utworzony za pomocą komendy MKLINK / J), jeśli zostanie usunięty w Eksploratorze, nie usunie katalogu docelowego ani jego zawartości. Jeśli nie jest pusty, katalogu docelowego nie można nawet usunąć za pomocą połączenia DEL w wierszu polecenia. Testowane dzisiaj.
Ed999,
W systemie Windows Server 2012 usunęło to zawartość katalogu, na którą wskazywano moje dowiązanie symboliczne ...
C Bauer,
Powinieneś ostrzec ludzi przed rmdirlinkami z Powershell!
NH.
28

W PowerShell nie używaj rmdir! Użyj cmd /c rmdir .\Targetzamiast tego. Sam to przetestowałem i potwierdziłem tutaj: http://kristofmattei.be/2012/12/15/powershell-remove-item-and-symbolic-links/

Northben
źródło
Ten blog myli znaczenie „Target”, czyli rzeczywistego katalogu, do którego prowadzi link, i którego ludzie zazwyczaj unikają usuwania podczas usuwania linku.
kreemoweet
2
rmdirjest wewnętrznym poleceniem cmd.exe , dlatego oczywiście wywołuje się go z innych powłok, których potrzebujesz cmd /club cmd /k. rmdirw PowerShell jest tylko aliasem doRemove-Item
phuclv
24

Jest inne rozwiązanie przetestowane przeze mnie i bezpieczne w użyciu. po prostu dodaj do prawdziwego folderu _ (przykład: foo zamień się w foo_), a następnie po prostu usuń link symbolik, a następnie usuń _ z prawdziwego folderu.

vcorp
źródło
2
tak, to jest w 100% najbezpieczniejsze rozwiązanie po tym, jak wiesz, że PowerShell nie podaje ** t o rmdir
test30
To sprytne środki ostrożności. +1
Hanna
Ostrzeżenie: Nie sądzę, żeby MOGŁO to nie działało na Win10, ponieważ naprawia skróty podczas zmiany nazwy. (Przynajmniej klasyczne skróty) Jednak nie przetestowano.
Hexo
Zrobiłem to na wszelki wypadek. Po zmianie nazwy folderu docelowego łącze symbolink nie powiodło się, gdy próbowałem uzyskać do niego dostęp, więc mogłem go usunąć bez obaw.
Andrew
21

mklink nie może zostać użyty do usunięcia dowiązań symbolicznych. Aby usunąć dowiązanie symboliczne, po prostu usuń je tak, jakbyś usuwał normalny plik. Na przykład, aby usunąć utworzone powyżej dowiązanie symboliczne foo, wprowadź następującą komendę:

Jeśli link jest twardym linkiem do katalogu:

C:\test>rmdir foo

lub JEŻELI link wskazuje na plik (w przeciwieństwie do katalogu)

C:\test>del foo

Źródło: http://www.mydigitallife.info/2007/05/22/create-symbolic-links-hard-links-and-directory-junctions-in-vista-with-mklink/

Daisetsu
źródło
2
Tylko upewnij się, że nie usuwasz go za pomocą del /Sani Eksploratora.
Hello71,
1
Zobacz odpowiedź eddyq poniżej, ponieważ użycie del do linku do katalogu nie będzie działać, a zamiast tego spróbuje usunąć zawartość folderu.
jpierson
2
Hardlinki do katalogów nie istnieją. Myślę, że chciałeś powiedzieć symlink.
Brilliand
0

W moim przypadku (Windows 10) po utworzeniu dowiązania symbolicznego za pomocą

MKLINK /D "C:\Users\username\Dropbox\MyProject" "C:\SourceProject"

a usuwanie poprzez usuwanie za pomocą eksploratora plików lub klawisza usuwania z klawiatury usuwa również oryginalny katalog .

Co należy zrobić, to usunąć łącze za pomocą wiersza polecenia.

C:\Users\username\Dropbox>rd /s MyProject

Szczegółowe informacje na temat polecenia rd: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rd

tetedp
źródło
0

Najprostszym sposobem jest przeniesienie folderu (na który wskazuje dowiązanie symboliczne) w inne miejsce (do folderu nadrzędnego), a następnie usunięcie dowiązania symbolicznego. Żadne pliki nie zostaną uszkodzone!

netgoblin
źródło
0

Zainstalowałem to rozszerzenie powłoki powłoki . Dzięki temu masz 2 metody.

METODA 1

Utwórz go za pomocą menu kontekstowego, jak pokazano, i usuń za pomocą eksploratora plików.

Przetestuj w folderze takim C:\Windows\Logsjak pokazano lub podobny. Właśnie tworzę katalog wszystkich możliwych lokalizacji plików tymczasowych do usunięcia i chciałem centralnego folderu, w którym mógłbym monitorować ich rozmiar za pomocą dowiązań symbolicznych.

Uwaga: biały ekran to tylko UAC .

usuń z metody explorer

METODA 2

Najbezpieczniejszym sposobem nieudokumentowanym tutaj AFAIK .

Na utworzonym dowiązaniu symbolicznym ( w powyższych krokach ) kliknij tym razem prawym przyciskiem myszy i kliknij właściwości, a następnie przejdź do Link Propertieskarty.

Uwaga: To rozszerzenie powłoki dodało tę kartę.

Zanim przejdę dalej, wiele więcej informacji można znaleźć tutaj , również na stronie głównej są wersje x64 i 32bit .

Aby kontynuować, możesz tutaj dodać wszystko do pola docelowego, o ile różni się ono od pierwotnego celu.


  1. Oto wcześniej z celem jako C:\Windows\Logs cel wcześniej

  2. Oto cel z celem C:\Windows\Logs_, zauważ dodatkowe _na końcu.

    cel po

  3. naciśnij OK

  4. Możesz to sprawdzić ponownie, wykonując powyższe 1-3 kroki powyżej, aby upewnić się, że się zablokował, tym razem pojawi się komunikat o błędzie po kliknięciu Link Propertieskarty, więc link jest zepsuty.

  5. Można teraz bezpiecznie (r) usunąć łącze symboliczne niż metoda 1 IMHO.


Ale! Obie metody działają tutaj, więc zależy to wyłącznie od wyboru użytkownika. Podoba mi się metoda właściwości, na którą szczęśliwie się natknąłem, więc masz 100% pewności, że link został zerwany, wykonując krok 4 powyżej.

Oto mój prezent tworzenia dowiązania symbolicznego prawym przyciskiem myszy, przeciągania folderu do innego i wybierania opcji utworzenia dowiązania symbolicznego w podmenu.

Aby usunąć, po prostu wykonaj 1-5 kroków powyżej metody 2 lub postępuj zgodnie z metodą 1.

Jak utworzyć i usunąć dowiązanie symboliczne za pomocą metody właściwości

Uwaga: biały ekran to tylko UAC .

gif jak tworzyć i usuwać łącza syn za pomocą metody właściwości

Stephen Sherry
źródło