Как массово удалить символические ссылки в Windows (среди обычных файлов с одинаковыми именами во многих папках)?

4773
Edward

Есть ли способ быстро удалить много символических ссылок во многих папках, которые содержат много других файлов? Например, какая-нибудь команда в командной строке (например, удастся удалить весь слинк, созданный в день XX)?

Удалите все объекты, которые являются символической ссылкой, все остальные объекты останутся. Теперь я перемещаюсь только по папкам, выбирая их вручную в проводнике Windows (переставляем все элементы по размеру и символическим ссылкам размером 0 КБ, а клавиши Shift выбираем все -> del) и удаляю медленно, возможно, иногда ошибку sl с другими файлами 0 КБ. Мой младший братан перетаскивает много файлов с помощью правого клика (Link Shell Extension Copyright (C) 1999 - 2008 от Германа Шинагла, уже установленного на ПК и встроенного в Windows Explorer), и он выбирает drop как символическую ссылку, все это становится мусором.

7

2 ответа на вопрос

7
dansmith65

Это похоже на ответ JdeBP, но не требует никакого внешнего программного обеспечения:

FOR /F "usebackq delims=" %a IN (`DIR /a:l /s /b "C:\dir\with\symlinks"`) DO RMDIR "%a" 

При использовании в сценарии замените %aна %%a.

Я пытался FOR / F "usebackq delims =" %% a IN (`DIR / a: l / s / b" D: \ "`) DO RMDIR "%% a". Я получил %% a было неожиданным в это время. Syaiful Nizam Yahya 7 лет назад 0
При вводе непосредственно в командную строку замените `%% a` на`% a`. `%% a` предназначен для использования в командном файле, как сказано в выводе` for /? `. Я обновлю свой ответ, чтобы включить эту информацию. dansmith65 7 лет назад 0
4
JdeBP

Использование утилиты SFUA:

Поиск символических ссылок можно выполнить так же, как и поиск жестких ссылок : с помощью findкоманды, входящей в состав служебного инструментария Microsoft SFUA, которая работает в Подсистеме для приложений на основе Unix :

находить . тип l | xargs rm -

Использование программного обеспечения JP TCC / LE :

Это простое упражнение с использованием переключателей атрибутов и обычной delкоманды :

del / a: l *
Можно, конечно, использовать /s, /pи другие параметры в delкоманде. И вы можете просмотреть то, что будет удален либо с помощью del«s /nопции или просто путем замены dirна del.

Предостережение

Оба из них действительно находят точки повторной обработки . Символические ссылки являются лишь одной из форм повторных точек. Если у вас есть другие, такие как соединения, вам нужно быть осторожным с тем, к каким частям дерева каталогов вы применяете эти команды. Использование диапазонов дат только для удаления файлов с недавними датами создания ( /[dc…]) также может быть выгодным.

Версия TCC / LE не работает с соединениями, потому что / s спускается * в * соединения, а не * рассматривает их для удаления *. / nj остановит это, но, похоже, не решит проблему. Кажется, что работает следующее, хотя del утверждает, что ничего не удалил: del / a: l / s / e / l * В качестве полезного помощника будут перечислены все такие файлы: dir / a: l / s / nj / k / м, так что вы можете увидеть, если это работает. -Робин rlpowell 11 лет назад 0
Это не смогло удалить точки повторной обработки в моем дереве каталогов, но позволило мне найти их (заменив `dir` на` del`) для удаления через проводник Windows. Zarepheth 7 лет назад 0