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


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

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

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

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

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

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

19   58  

19 ответов:

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

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

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

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, путь должен быть заключен в кавычки.

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

  1. открыть файловый менеджер 7Zip
  2. Выберите файл
  3. Shift-удалить файл

Ура!

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

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

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

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

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

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

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

  1. скачать программа бесплатно.

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

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

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

Я пробовал тонну вещей в windows, и ничего не работало..

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

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

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

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

- fm

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

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

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

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

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

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

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

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

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

    rm-rf directoryname

все папки, подпапки, которые windows жаловалась на удаление, теперь будут удалены

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

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

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

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

robocopy empty_dir <foldertobedeleted> /MIR

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

вывод будет такой..

enter image description here>

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

мы должны использовать Change.org ходатайствовать перед МС о включении этой способности. Это не может быть трудно. Если они беспокоятся о обратной совместимости, почему бы просто не иметь строгий режим, который администраторы могут включать или выключать. По крайней мере, дайте нам предупреждение, но затем позвольте нам удалить его в любом случае. Нажать. [/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

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

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

$ rm -rf DeleteFolderName

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