Як я можу видалити символічне посилання?


322

Я створив симпосилання за допомогою mklink. Тепер мені потрібно змінити його, але я не можу зрозуміти, як його видалити, щоб я міг відтворити його правильно.

Відповіді:


557

Будьте дуже обережні.

Якщо у вас є символічне посилання, що представляє собою каталог (зроблений за допомогою mklink /d), за допомогою використання delбуде видалено всі файли в цільовому каталозі (каталог, на який вказує посилання), а не лише посилання.

РІШЕННЯ: rmdir з іншого боку, буде видалено лише посилання на каталог, а не те, на що вказує посилання.


103
Щойно випадково зробив це (видалив повний вміст цільової папки), це важлива порада.
Саймон Гіллбі

4
Ця відповідь не зовсім точна. Delвидаляє файли, а не папки. Тому ви не використовували б delдля видалення посилання.
AMissico

12
Але не використовуйте rmdirв PowerShell. Загорніть його cmdспочатку. Дивіться мою відповідь нижче ...
northben

4
Як щодо того, якщо я видаляю його через Windows Explorer ????
Cheung

8
Там співробітники Microsoft знову вирушають, просто намагаючись зруйнувати моє життя, кар’єру та операційну систему Windows.
ThorSummoner

62

Для видалення створених разом із mklink /dним символьних посилань безпечно просто видалити символьне посилання в Explorer.


27
+1, щоб сказати людям, що заощадити, щоб видалити символічне посилання через Провідник Windows.
AMissico

3
Це правильно. Я роблю це постійно. Просто перевірив її знову зараз.
ddelrio1986

2
Це просто працювало і для мене. я видалив посилання, а не папку-джерело, до якої було пов’язано. можливо, що улов.
R Hughes

3
Безпечно просто видалити його правою кнопкою миші -> Видалити. Це НЕ видаляє пов'язану папку.
Hexo

mklink / d Не працював для мене в Windows 7 .. Я, можливо, використовував стару версію, хоча
abelito

47

Для символьного посилання на файл використовуйте del. Для символьного посилання на каталог, зроблений за допомогою mklink /d, використовуйте rmdir.


5
Попередження: "del" видалить файл, а не лише посилання.
WoodenKitty

6
Попередження від @Tristan невірно, ця відповідь точна. Тестовано на Windows 7.
jiggunjer

1
У Windows 7 SP1 (64-бітний) символічне посилання, яке вказує на файл (наприклад, створений за допомогою MKLINK) або на каталог (MKLINK / D), може бути видалено в Провіднику Windows, використовуючи звичайну опцію 'delete' GUI Windows , не видаляючи ціль. Навіть JUNCTION (наприклад, створений за допомогою команди MKLINK / J), якщо його видалити в Explorer, не видалить цільовий каталог, ані його вміст. Якщо він не порожній, цільовий каталог неможливо навіть видалити, використовуючи команду DEL з'єднання в командному рядку. Протестовано сьогодні.
Ed999

У Windows Server 2012 це видалило вміст каталогів, на яке було вказано моє символьне посилання ...
C Bauer

Ви повинні попередити людей не rmdirпосилатися з Powershell!
NH.

28

У Powershell не використовуйте rmdir! Використовуйте cmd /c rmdir .\Targetзамість цього. Я сам це перевірив і підтвердив тут: http://kristofmattei.be/2012/12/15/powershell-remove-item-and-symbolic-links/


Цей блог плутає значення "Цільового", що є фактичним каталогом, на який вказує посилання, і який люди, як правило, хочуть уникнути видалення під час видалення посилання.
kreemoweet

2
rmdirце внутрішня команда cmd.exe , тому очевидно, щоб викликати її з інших оболонок, які вам знадобляться cmd /cабо cmd /k. rmdirв PowerShell - лише псевдонім доRemove-Item
phuclv

24

Є ще одне перевірене мною рішення і безпечне у використанні. просто додайте до реальної папки _ (наприклад: foo postala foo_), а потім просто видаліть своє посилання symbolik, а потім видаліть _ з вашої справжньої папки.


2
так, це 100% найбезпечніше рішення після того, як ви знаєте, що повноваження не дають, як ** t про rmdir
test30

Це розумна обережність. +1
Ханна

Попередження: Я не думаю, що це може НЕ працювати на Win10, оскільки він фіксує ярлики після перейменування. (Принаймні класичні ярлики) Не перевірено.
Hexo

Я робив це на всякий випадок. Після того, як я перейменував цільову папку, під час спроби отримати доступ до неї посилання на посилання символів не вдалося, тому я міг видалити її, не хвилюючись
Андрій

21

mklink не можна використовувати для видалення символічних посилань. Щоб видалити символічне посилання, просто видаліть їх так, ніби ви видаляєте звичайний файл. Наприклад, для видалення символьного посилання foo, створеного вище, введіть таку команду:

Якщо посилання є твердим посиланням на каталог:

C:\test>rmdir foo

інакше, ЯКЩО посилання вказує на файл (на відміну від dir)

C:\test>del foo

Джерело: http://www.mydigitallife.info/2007/05/22/create-symbolic-links-hard-links-and-directory-junctions-in-vista-with-mklink/


2
Просто переконайтеся, що ви не видалите його за допомогою del /SПровідника.
Привіт71

1
Дивіться відповідь eddyq нижче, оскільки використання del для посилання на каталог не працюватиме, а натомість спробує видалити вміст папки.
jpierson

2
Жорстких посилань на каталоги не існує. Я думаю, ти мав на увазі сказати symlink.
Brilliand

0

У моєму випадку (Windows 10) після створення символічного посилання за допомогою

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

а видалення за допомогою видалення за допомогою провідника файлів або клавіші видалення клавіатури також видаляє вихідний каталог .

Що ви повинні зробити, це видалити посилання за допомогою командного рядка.

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

Докладніше про команду rd: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rd


0

Найпростіший спосіб - перемістити папку (на яку вказує символічне посилання) в інше місце (до батьківської папки), а потім видалити символічне посилання. Жодні файли не завдадуть шкоди!


0

Я встановив це Link Shell Extension . З цим у вас є 2 методи.

МЕТОД 1

Створіть його за допомогою контекстного меню, як показано, та видаливши за допомогою провідника файлів.

Тестуйте в папці типу, C:\Windows\Logsяк показано або подібною. Я просто створюю каталог усіх можливих місць тимчасових файлів, які потрібно видалити, і я хотів центральну папку, де я міг би відстежувати їх розмір за допомогою символічних посилань.

Зверніть увагу: Білий екран - це лише UAC .

видалити з методу Explorer

МЕТОД 2

Тут найбезпечніший недокументований AFAIK .

На створеному символічному посиланні ( на кроках, показаних вище ) цього разу клацніть правою кнопкою миші та натисніть властивості, а потім перейдіть на Link Propertiesвкладку.

Примітка. Це розширення оболонки додало цю вкладку.

Перш ніж я продовжую, тут можна знайти більше інформації , також на домашній сторінці розміщені версії x64 та 32 біт .

Отже, щоб продовжити, тут ви можете додати що-небудь до цільового поля, якщо це відрізняється від вихідної цілі.


  1. Ось попередня ціль як C:\Windows\Logs націлити раніше

  2. Ось наступний результат із ціллю як C:\Windows\Logs_, зауважте додаткові _наприкінці.

    ціль після

  3. Натисніть OK

  4. Ви можете перевірити це ще раз, пройшовши ті ж самі 1-3 кроки вище, щоб переконатися, що застряг, на цей раз ви отримаєте повідомлення про помилку, натиснувши на Link Propertiesвкладку, щоб посилання тепер було розірвано.

  5. Тепер безпечно (r) видалити символічне посилання, ніж метод 1 IMHO.


Але! Обидва методи працюють тут, тому це повністю залежить від вибору користувача. Мені подобається метод властивостей, на який я із задоволенням натрапив, тож ви на 100% впевнені, що посилання розірвано за допомогою кроку 4 вище.

Ось подарунок від мене, що створює символічне посилання правою кнопкою миші, перетягуючи папку на іншу і вибираючи опцію для створення символьної посилання в підменю.

Щоб видалити, просто виконайте 1-5 кроків вище способу 2 або виконайте метод 1.

Як створити та видалити символічне посилання за допомогою методу властивостей

Зверніть увагу: Білий екран - це лише UAC .

gif про те, як створити та видалити синхронічні посилання за допомогою методу властивостей

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.