Подтвердить что ты не робот

Как удалить длинный путь в окнах.

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Решения

@Charlie и @Tomalek выглядят так, будто они могут быть более элегантными. Я не планирую повторять опыт, чтобы узнать об этом.

Ответ 2

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

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

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

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

Ответ 3

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

  • Открыть диспетчер файлов 7Zip
  • Перейдите к файлу
  • Shift-Удалить файл

Ура!

Ответ 4

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

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

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

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

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

Ответ 5

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

Ответ 6

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

  • Загрузите Cygwin бесплатно.

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

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

Ответ 7

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

Я попробовал массу вещей в окнах и ничего не работал.

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

Ответ 8

Был указан метод, упомянутый в этот пост форума Windows Sysinternals от maxaha1.

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

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

Ответ 9

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

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

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

-FM

Ответ 10

Программно вы можете удалить с помощью DeleteFileW и RemoveDirectoryW и добавить L"\\?\" к именам файлов. Обратите внимание, что вам нужно использовать версию W, а не версию API.

Ответ 11

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

Ответ 12

Lol У меня была аналогичная проблема несколько лет назад. Из-за ошибки я создал неопределенное вложенность папок, пока имя файла не затянется слишком долго.

IIRC, я удалил их программным путем, просканировав структуру папок.

Ответ 13

Мне не понравилось ни одно из решений, размещенных здесь и в других местах (robocopy, 7zip, subst, shady spyware), поэтому я развернул свой собственный инструмент командной строки.

Он может рекурсивно удалять файл или весь каталог. Возможно, в будущем я добавлю больше вариантов.

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

Ответ 14

Хорошо, я попробовал найти решение для этого, и я нашел одно из самых простых решений для пользователей Windows.

  • Установить Mobaxterm
  • Откройте mobaxterm. Перейдите в каталог, который вы хотите удалить (используя cd), и выполните следующую команду

    rm -rf directoryname

Все папки, подпапки, окна которых жалуются на удаление, теперь будут удалены.

Ответ 15

MIR (зеркальное отображение полного дерева каталогов) работало для меня также в сетевых и оконных сетевых сетях.

robocopy empty_dir <foldertobedeleted> /MIR

  • Просто создайте пустой каталог и скажите robocopy, чтобы очистить все в целевом каталоге, который не находится в пустом каталоге

вывод будет таким.

введите описание изображения здесь >

Ответ 16

Его довольно раздражает то, что в 2016 году это все еще представляет нам пользователей Windows проблему, когда Linux решила эти годы назад. Это сделало еще более раздражающим, когда его легко сделать на Java.

Мы должны использовать Change.org для ходатайства MS, чтобы включить эту способность. Это не сложно. Если они обеспокоены обратной совместимостью, почему бы просто не использовать режим Strict, который администраторы могут включать или выключать. По крайней мере, дайте нам предупреждение, но затем позвольте нам удалить его в любом случае. GRRRRR [/rant]

Если вы используете Java на своем компьютере, вы можете найти этот код полезным:

import java.io.File;

public class Delong {

    public static void main(String[] args) {
        File file = new File("F:\\YourDirectory\\YourFile");
        boolean result = deleteDirectory(file);

        if(result)
            System.out.println("Deleted");
        else
            System.out.println("Failed");
    }//end main

    /**
     * Force deletion of directory
     * @param path The path you want to delete
     * @return True if it worked;
     */
    static public boolean deleteDirectory(File path) {
        if (path.exists()) {
            File[] files = path.listFiles();
            for (int x = 0; x < files.length; x++) {
                if (files[x].isDirectory()) 
                    deleteDirectory(files[x]);
                 else 
                    files[x].delete();
            }//end for
        }///end if
        return (path.delete());
    }//endDeleteDirectory

}//end class

Ответ 17

Вы можете использовать "Cygwin" с командой "rm -force --recursive PATH" или "rm -fr PATH".

Ответ 18

Если у вас уже установлена ​​ git в вашей системе, то простой способ удалить папку со всем ее содержимым - открыть окно gitbash, а затем запустить эту команду.

$ rm -rf DeleteFolderName

Ответ 19

Попробуйте использовать Unlocker. Он используется для уничтожения процессов, содержащих блокировки файлов, но я думаю, что он может принудительно удалить файлы с расширением, например, у вас есть.