На этот вопрос уже есть ответ здесь:
У моей жены есть несколько файлов и папок, которые каким-то образом оказались с именами файлов, из-за которых их невозможно было удалить (нельзя удалить) обычным способом или через командную строку. Я считаю, что имена файлов слишком длинные из-за глубины структуры папок. Кто-нибудь знает хорошую утилиту для очистки таких файлов?
CTRL
+DELETE
- это самый простой метод, на мой взгляд ...Ответы:
Если вы хотите полностью удалить каталог и он содержит длинные пути,
robocopy
ОЧЕНЬ хорошо работает:Это работает, потому что robocopy внутренне использует Unicode-совместимые версии функций Win32 с
\\?\
префиксом для путей к файлам ; эти функции имеют ограничение 2¹⁶1 (32 767) символов вместо 259.Возможно, вам придется пройти через этот процесс более одного раза, чтобы избавиться от всех файлов.
источник
Из командной строки:
Это перечислит ваши файлы / папки в формате короткого имени. Затем используйте короткое имя в точности как написано, чтобы удалить файл:
источник
dir
илиcd ..
.dir
использоватьpushd
вместо этого. Это сработало для меня.Я прогрессивно продолжаю свой путь по пути, переименовывая каждую последующую родительскую папку в «1» и пытаясь удалить. Вы эффективно сокращаете путь каждый раз, и мне никогда не приходилось работать с более чем 4 или 5 каталогами, пока я наконец не смогу удалить всю структуру каталогов (что может или не может быть тем, что вы хотите). Вы также можете сделать это из последней дочерней папки и двигаться вверх или вниз.
источник
mv * 1 && cd 1
. Это не сработало, когда в каталоге находилось несколько файлов, но в тот момент, какrm -rf *
правило, получалось.В некоторых программах, включая Command Prompt (
cmd.exe
), вы можете обойти ограничение длины файла, добавив префикс полного пути\\.\
следующим образом:источник
rm -rf \\directoryname
Хитрость, которую я использовал, чтобы обойти ограничение длины «полный путь и имя файла» для перемещения, копирования или удаления чего-либо, заключается в том, чтобы сократить его путем «взлома» на полпути (или более) с использованием сопоставленной буквы диска, указывающей на папку путь вниз по пути .
так что у вас есть c: \ some \ long \ path ... \ и \ foo \ bar \ folder \ oldfiles \ myoldfile.txt.
Затем сопоставьте произвольную букву диска где-нибудь вдоль пути, чтобы длина первого фрагмента пути составляла всего несколько символов. Обязательное условие - папка должна находиться в общей папке (которая может уже быть, если она находится на сервере, где я должен был это сделать), и если ее еще нет, выберите папку где-нибудь в пути и поделиться этим. В зависимости от среды и уровня паранойи, разрешите всем изменять доступ к общему ресурсу, если разрешения NTFS достаточно ограничены. Если хотите, просто разрешите изменять права только для своей учетной записи.
Теперь перейдите в общую папку или папку внутри нее и поделитесь ею или используйте командную строку следующим образом. Предположим, вы использовали общую папку «foo» как «fooshare», тогда вы можете сделать
и диск X: теперь указывает непосредственно на папку «папки» внутри этого общего ресурса, поэтому «x: \ oldfiles \ myoldfile.txt» теперь довольно короткий.
(«/ Persistent: no» означает, что это не переживет следующую перезагрузку и не запутает вас в дальнейшем. Не забудьте отключить общий доступ к своей папке, когда закончите.)
Помните, что вы не должны делить папку , содержащую файл обязательно, если это уже внутри общей папки вы можете просто карту через акцию и вложенные папки в целевой папку рядом с файлом , и работает отлично.
Мне пришлось использовать эту технику, чтобы выполнить массовую робокопию между двумя серверами, когда мы поняли, что пользователи подключили диски достаточно глубоко в структуре папок, поэтому они смогли использовать оттуда 255 символов, но это превысило общую длину пути к файлу при доступе с локального диска root.
источник
subst x: C:\Some\first\part\of\the\long\path
а затем удалить диск с помощьюsubst x: /d
subst
Трюк , кажется, работает хорошо, если имя файла не так долго, чтобы сделать его пойти более 260 символов , даже в корне диска.net use
net use x: \\localhost\c$\bar\folders /persistent:no
Самый простой способ, который я нашел, это загрузиться с живого CD с Ubuntu.
В качестве альтернативы вы можете создать общую папку на полпути по пути, а затем подключить к ней сетевой диск и выполнить удаление из сопоставленной папки (даже на той же машине)
источник
Переименуйте каталог вырезать / вставить файл в другом месте, а затем удалите его. Работает здесь
Или просто из командной строки, если вы не хотите проходить через неприятности.
источник
node_modules
папки), перетаскивайте его на рабочий стол и удаляйте. Промойте и повторите, поднимаясь по нескольким папкам за раз. Что за неприятная проблема.Наверное, не самый лучший способ, и мне интересно посмотреть, что придут другие -
У меня было это однажды, и я попробовал несколько вещей без какой-либо удачи. Вместо того, чтобы искать хороший инструмент, я перезапустил диск Windows, зашел в консоль восстановления и просто удалил ее оттуда. Работал первый раз и действительно хорошо!
Кроме того, только что сделал Google для вас и нашел это - DelinvFile выглядит хорошо, но не могу ручаться за это.
Редактировать - Предупреждение, только что увиденное выше - всего лишь пробная версия - Может быть, не так хорошо, как я думал!
источник