Как удалить длинный путь в Windows. - PullRequest
59 голосов
/ 15 февраля 2009

При импорте проекта в Eclipse он каким-то образом начал создавать рекурсивные версии каталога.

Теперь, когда я пытаюсь что-либо удалить, я получаю сообщение «имя файла, которое вы указали, слишком длинное».

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

Я могу получить свойства папки верхнего уровня, и там написано, что она содержит 497 папок.

Вопрос 1: как я могу удалить все эти вещи в Windows?

Вопрос 2: Что, черт возьми, думал о затмении?

Ответы [ 19 ]

159 голосов
/ 23 июля 2010
robocopy empty_dir base_nested_dir /purge

Пример. Если у вас слишком длинный путь к папке, например:

D:\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles

следуйте этим инструкциям, чтобы удалить его.

  1. Создать пустую папку, например C:\Users\Name\Desktop\temp.
  2. Открытие окна командной строки.
  3. Тип robocopy C:\Users\Name\Desktop\temp D:\BackupFolder /purge

Примечание. Если на шаге 3 в любом пути есть пробелы, путь должен быть заключен в кавычки.

85 голосов
/ 22 января 2015

7Zip - идеальное решение, если вам не удобна командная строка.

  1. Открыть 7Zip File Manager
  2. Перейдите к вашему файлу
  3. Shift-Удалить ваш файл

Ура!

19 голосов
/ 15 февраля 2009

У меня была проблема, похожая на эту в Eclipse: при попытке импортировать проект с использованием Subclipse он генерировал глубоко вложенный набор каталогов, которые я не мог удалить.

Я сделал пару вещей, во-первых, я отредактировал имена каталогов до максимально возможной длины (на самом деле я думаю, что это было бессмысленно). Во-вторых, я прошел как можно глубже дерево каталогов, а затем вырезал и вставлял ветвь (что позволяет удалить исходную ветвь), а затем повторил процесс.

@ Решения Чарли и @ Томалека выглядят более элегантно. Я не планирую повторять опыт, чтобы выяснить это.

12 голосов
/ 15 февраля 2009

Что касается Q1)

Используйте Sub для короткого замыкания путей:

subst Q: C:\very\long\path\created\by\eclipse
Q:
del *.*

Что касается Q2)

Длинные пути представляют меньшую проблему в других ОС, и есть функции Windows API, которые могут иметь дело с путями длиннее 255 символов, так что, я думаю, они просто сделали это.

10 голосов
/ 15 февраля 2009

Если вам нужно иметь дело с путями длиннее MAX_PATH, вам придется использовать Unicode-версии файловых API-интерфейсов Windows (например, DeleteFileW) и использовать префикс \\? \ , Вы можете написать короткую программу с использованием этих API для перечисления этих каталогов и их удаления.

7 голосов
/ 08 октября 2010

Исправление просто и бесплатно! Нет необходимости переименовывать папки вообще.

  1. Скачать Cygwin бесплатно.

  2. используйте команду rm -f -r <folder-name> и подождите несколько секунд.

У меня была папка размером 1,5 ГБ с множеством внутренних папок, и она работала!

4 голосов
/ 19 февраля 2010

Я столкнулся с той же проблемой, используя Eclipse ..! было создано миллион вложенных папок, и оно заняло более 500 МБ пространства !!!!

Я попробовал кучу вещей в Windows, но ничего не получалось ..

наконец, я просто перезагрузился с помощью Ubuntu и удалил эту ужасную папку ... просто так ... Ubuntu, похоже, не имеет таких ограничений доступа в зависимости от длины пути к файлу, как Windows ... делает жизнь намного проще ..:)

4 голосов
/ 24 августа 2011

Метод, упомянутый в этом сообщении на форуме Windows Sysinternals от maxaha1 , работает.

Я предлагаю вам работать сверху вниз. Пока вы остаетесь в том же том (доля), вы обычно можете перетащить каталоги верхнего уровня в новые родители, не обращая внимания на содержание каталога перетаскиваемый (то есть. и проблемы длины / рекурсии, которые это могло бы иметь). Так Вы берете каталог, может быть, 4 или 5 уровней вниз по пути проблемы, и перетащите его в корень. Затем удалите исходный путь, который сейчас только содержит несколько уровней. В идеале, работать, чтобы держать самый длинный путь к меньшему чем 250 символов (включая имена файлов). Я делаю системную миграцию в на данный момент, и у нас есть пользователи с 340+ путями символов, которые не копировать без этого метода. Я пробовал Subs, рекурсивное использование сети, рекурсивные сценарии и т. д. К сожалению, пользователи, похоже, могут создавать вещи, которые мешают лучшим программистам, администраторам и т.д ..

Создавайте новые папки и просто перетаскивайте несколько папок сверху вниз каждый раз (и удаляйте их), пока не очистите их.

4 голосов
/ 12 апреля 2012

Предыдущие три ответа явно являются спамом (для демоверсии платного ПО). Если вам нужно бесплатное решение в один клик, см. Здесь:

http://www.osmstudios.com/Display.asp?Page=pathtoolong

Который, вероятно, использует 3-строчную Java из этого потока.

-FM

3 голосов
/ 03 августа 2015

Кто-то выше уже разместил ссылку на "rimraf", но позвольте мне добавить более подробную информацию. Если в вашей системе установлен Node, просто используйте модуль rimraf (он может быть установлен на вашем пути). Это, безусловно, самый простой способ удалить что-либо в системе Windows в самых нетривиальных случаях. На самом деле rimraf не так хорош, это потому, что Node.js работает с файловыми системами на уровне ядра устройства. Если вы посмотрите на исходный код модуля 'fs' для Node, вы увидите код, такой как this . По сути, Node.js обрабатывает файловые системы намного лучше, чем даже Git для Windows, т. Е. Есть ошибка при использовании git clean -fdx в Windows, которая не удаляет папки с длинными путями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...