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

322

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

Бен V
источник

Ответы:

557

Будь очень осторожен.

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

РЕШЕНИЕ: rmdir с другой стороны, удаляется только ссылка на каталог, а не то, на что указывает ссылка.

eddyq
источник
103
Просто случайно сделав это (удалил все содержимое целевой папки), это важный совет.
Саймон Гилби,
4
Этот ответ не совсем точен. Delудаляет файлы, а не папки. Поэтому вы не будете использовать, delчтобы удалить ссылку.
AMissico
12
Но не используйте rmdirв PowerShell. Оберните это cmdсначала. Смотрите мой ответ ниже ...
Northben
4
Как насчет того, чтобы удалить его через проводник Windows ????
Чеунг
8
Там сотрудники Microsoft снова идут, просто пытаясь разрушить мою жизнь, карьеру и операционную систему Windows.
ThorSummoner
62

Для удаления символьных ссылок каталога, созданных с mklink /dего помощью, можно просто удалить символическую ссылку в проводнике.

ddelrio1986
источник
27
+1 для того, чтобы сказать людям, что сохранить символическую ссылку можно через Проводник Windows.
AMissico
3
Верно. Я делаю это все время. Просто проверил это снова прямо сейчас.
ddelrio1986
2
Это сработало и для меня. я удалил ссылку, а не исходную папку, на которую была ссылка. возможно, что подвох.
Р Хьюз
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 с помощью обычного графического интерфейса Windows «удалить» , без удаления цели. Даже JUNCTION (например, созданный с помощью команды MKLINK / J), если он будет удален в Explorer, не удалит ни целевой каталог, ни его содержимое. Если не пустой, целевой каталог даже не может быть удален с помощью команды DEL junction в командной строке. Проверено сегодня.
Ed999
В Windows Server 2012 это удалило содержимое каталога, на которое была указана моя символическая ссылка ...
C Bauer
Вы должны предупредить людей, чтобы они не rmdirссылались на Powershell!
НХ.
28

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

northben
источник
В этом блоге путается значение «Target», то есть фактического каталога, на который указывает ссылка, и которого люди, как правило, хотят избегать удаления при удалении ссылки.
kreemoweet 22.09.15
2
rmdirявляется внутренней командой cmd.exe , поэтому, очевидно, вызывать ее из других оболочек, которые вам нужны cmd /cили cmd /k. rmdirв PowerShell это просто псевдоним дляRemove-Item
phuclv
24

Есть еще одно решение, проверенное мной и безопасное для использования. просто добавьте в реальную папку _ (пример: foo становитесь foo_), затем просто удалите ссылку Symbolik, затем удалите _ из вашей настоящей папки.

vcorp
источник
2
да, это 100% самое безопасное решение после того, как вы узнали, что powershell не выдаст ** t о rmdir
test30
Это умная мера предосторожности. +1
Ханна
Предупреждение: я не думаю, что это МОЖЕТ не работать на Win10, так как он исправляет ярлыки после переименования. (По крайней мере, классические ярлыки) Не проверено, хотя.
Hexo
Я сделал это на всякий случай. После того, как я переименовал целевую папку, ссылка Symbolink не удалась, когда я попытался получить к ней доступ, поэтому я мог удалить ее, не беспокоясь.
Андрей
21

mklink нельзя использовать для удаления символических ссылок. Чтобы удалить символическую ссылку, просто удалите их, как будто вы удаляете обычный файл. Например, чтобы удалить созданную выше символическую ссылку foo, введите следующую команду:

Если ссылка является жесткой ссылкой на каталог:

C:\test>rmdir foo

или, если ссылка указывает на файл (в отличие от каталога)

C:\test>del foo

Источник: http://www.mydigitallife.info/2007/05/22/create-symbolic-links-hard-links-and-directory-junctions-in-vista-with-mklink/

Daisetsu
источник
2
Просто убедитесь, что вы не удалите его с помощью del /Sили Explorer.
Привет71,
1
Смотрите ответ eddyq ниже, потому что использование del для ссылки на каталог не будет работать и вместо этого попытается удалить содержимое папки.
jpierson
2
Жестких ссылок на каталоги не существует. Я думаю, что вы хотели сказать символическую ссылку.
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

tetedp
источник
0

Самый простой способ - переместить папку (на которую указывает символическая ссылка) в другое место (в родительскую папку), а затем удалить символическую ссылку. Никакие файлы не пострадают!

netgoblin
источник
0

Я установил это расширение Link Shell . При этом у вас есть 2 метода.

МЕТОД 1

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

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

Обратите внимание: белый экран - это просто UAC .

удалить из метода проводника

МЕТОД 2

Самый безопасный способ без документов здесь AFAIK .

На созданной символической ссылке ( в шагах, показанных выше ) щелкните правой кнопкой мыши на этот раз и выберите Свойства, затем перейдите на Link Propertiesвкладку.

Примечание. Это расширение оболочки добавило эту вкладку.

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

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


  1. Вот прежде с целью как C:\Windows\Logs цель до

  2. Вот после с целью C:\Windows\Logs_, обратите внимание на дополнительное _в конце.

    цель после

  3. Нажмите OK

  4. Вы можете проверить это еще раз, выполнив те же 1-3 шага выше, чтобы убедиться, что он застрял, на этот раз вы получите сообщение об ошибке при нажатии на Link Propertiesвкладку, поэтому ссылка теперь не работает.

  5. Теперь безопасно (r) удалить символическую ссылку, чем метод 1 ИМХО.


Но! Оба метода работают здесь, так что это полностью зависит от выбора пользователя. Мне нравится метод свойств, на который я случайно наткнулся, так что вы на 100% уверены, что ссылка разорвана с помощью шага 4 выше.

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

Чтобы удалить, просто выполните шаги 1-5 выше метода 2 или выполните метод 1.

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

Обратите внимание: белый экран - это просто UAC .

GIF о том, как создавать и удалять син-ссылки, используя метод свойств

Стивен Шерри
источник