Eclipse создал временную папку в одной из директорий, которая достаточно глубоко вложена, например
dir1\dir1\dir1\dir1\...
Я не могу удалить эту папку в Windows с помощью проводника, команд del
or rmdir
или Cygwin 'rm'. Как мне удалить эту очень длинную папку?
Он просто продолжает говорить "Имя файла слишком длинное ..."
Ответы:
Если вы похожи на меня и не любите устанавливать дополнительное программное обеспечение для решения такой проблемы, я бы воспользовался предложением XQYZ и использовал его
robocopy
для решения этой проблемы. (В моем случае проблема была создана в первую очередь с помощью robocopy, скопировав каталог с рекурсивными точками соединения без предоставления / XJ для robocopy).Чтобы удалить дерево каталогов, начинающееся с c: \ subdir \ more \ Offnding_dir :
Весь пошаговый процесс так же прост:
cd c:\subdir\more
перейти в родительский каталог.mkdir empty
создать пустой каталог.robocopy empty offending_dir /mir
зеркалировать пустой каталог в оскорбительный.rmdir offending_dir
чтобы избавиться от теперь пустого оскорбительного каталога иrmdir empty
чтобы избавиться от вашего промежуточного пустого каталога.источник
robocopy
и точки соединения; спасибо, что показали мне, как использовать это, чтобы навести порядок!Это на самом деле довольно просто исправить. Скажем, что структура каталогов такова:
Чтобы исправить это, просто переименуйте каждую папку в одно-символьное имя папки, пока она не станет слишком длинной для удаления:
C:\Dir1
вC:\D
C:\D\
C:\D\Dir1
вC:\D\D
C:\D\D\
Вот пакетный файл для автоматизации процесса (эта простая версия лучше всего подходит для простых каталогов, подобных описанным в вопросе, особенно для одноразовых). Передайте ему максимально возможную папку (например,
C:\Dir1
дляC:\Dir1\Dir1\Dir1…
илиC:\Users\Bob\Desktop\New Folder
дляC:\Users\Bob\Desktop\New Folder\abcdefghi…
)Техническое объяснение
Другие предлагаемые решения являются обратными; вы не можете это исправить, прокладывая себе путь из самой внутренней директории наружу, вам нужно идти в другом направлении.
Когда вы пытаетесь получить доступ к каталогу, вы делаете это, используя его абсолютный путь, явно или нет, который включает в себя все, что было до него. Следовательно, для такой структуры каталогов
C:\Dir1\Dir1\Dir1\Dir1
длина пути до самого внутреннегоDir1
равна 22. Однако длина пути до самого внешнегоDir1
составляет всего 7, и поэтому все еще доступна независимо от ее содержимого (в контексте пути данного каталога файловая система не знает, что она содержит, или как она влияет на общую длину пути своих дочерних каталогов, только каталоги-предки - вы не можете переименовать каталог, если общая длина пути будет слишком большой).Поэтому, когда вы сталкиваетесь с слишком длинным путем, вам нужно перейти на максимально возможный уровень, переименовать его в односимвольное имя и повторить для каждого уровня в нем. Каждый раз, когда вы это делаете, общая длина пути сокращается на разницу между старым именем и новым именем.
Обратное также верно. Вы не можете создать путь, который больше максимальной поддерживаемой длины (в DOS и Windows,
MAX_PATH = 260
). Тем не менее, вы можете переименовать каталоги, работая изнутри наружу, в более длинное имя. В результате более глубокие папки, абсолютный путь которых> 260, будут недоступны. (Это не делает их «скрытыми» или безопасными, поскольку к ним достаточно просто добраться, поэтому не используйте этот метод для скрытия файлов.)Интересная сторона Примечание
Если вы создаете папки в Windows 7 Explorer, может показаться, что Explorer позволяет вам создавать подкаталоги так, чтобы общая длина была больше, чем
MAX_PATH
фактически, но фактически она обманывает, используя «имена файлов DOS 8.3». Вы можете увидеть это, создав дерево, например:Его длина составляет 696 символов, что, конечно, намного больше, чем 260. Кроме того, если вы переходите к самому внутреннему подкаталогу в Проводнике, он показывает его, как и ожидалось, в адресной строке, когда он не в фокусе, но когда вы щелкаете по адресу бар, он меняет путь
C:\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\ABCDEF~1\
, длина которого составляет всего 102 символа.В XP он этого не делает, вместо этого он решительно отказывается создавать более длинный путь, чем поддерживается.
Что было бы действительно интересно, так это узнать, как Windows 7 Explorer обрабатывает «слишком длинные пути», когда эта
NtfsDisable8dot3NameCreation
опция установлена.источник
\\?` doesn't work with
rmdir`.\\?\C:\dir\dir\dir\dir
буквально обходят MAX_PATH; здесь нет никаких «переменных». (Но, как я уже сказал, по какой-то причине он не работает сrmdir
другимиcmd.exe
встроеннымиmd C:\01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
Это не будет работать, потому что файловая система имеет достаточно информации, чтобы определить, что общая длина пути будет 263 символа, поэтому она не работает.Вы можете сократить путь, используя
subst
для создания виртуального диска:Перейдите на виртуальный диск:
Теперь вы можете удалить файлы:
Удалить виртуальный диск:
Удалить каталог:
источник
C:\TEMP\dir1\dir1\dir1
, то он сократит часть этого, что позволит вам войти. Это похоже на ваше предложение переименовать, но вместо этого с отображением. ;):-)
Я написал небольшое приложение на C #, чтобы помочь мне удалить похожую очень глубокую структуру, созданную небрежным использованием Robocopy и резервной копии с Homeserver; по умолчанию Robocopy рассматривает точки соединения как обычные папки ... :-( Вы можете получить большой беспорядок, не заметив этого.
Этот инструмент доступен на CodePlex с исходными файлами для любого пользователя.
источник
Некоторое время назад я создал небольшой автономный исполняемый файл утилиты с именем DeleteFiles , который можно легко использовать для выполнения этой задачи.
Используя эту автономную утилиту, вы можете просто:
удалить всю структуру папок. -r возвращает иерархию папок из начального каталога вниз, -f удаляет все пустые папки (которые будут всеми, если вы будете использовать . как спецификацию файла). DeleteFiles поддерживает пути длиннее, чем ограничение Windows MAX_PATH, поэтому он будет отлично работать с глубоко вложенными папками.
DeleteFiles является бесплатным и открытым исходным кодом, и вы можете получить бинарный или исходный код из GitHub или установить непосредственно с помощью Chocolatey
источник
> NUL
в конец может ускорить процесс.Просто и легко сейчас
я сталкивался с этой же проблемой, так как долго с node_modules, которые очень вложенные папки. поэтому, наконец, сделал скрипт для исправления того, что может удалять папки путем сокращения путей.
https://github.com/dev-mraj/fdel
источник
Во время работы с Sikuli меня задело рекурсивным циклом Calculator.sikuli в программе, которая создала бесчисленное количество каталогов «calculator.sikuli.calculator.sikuli». Я мог бы переместить дерево, но путь слишком длинный для удаления.
Перепробовав несколько решений с помощью popd loop, Scandisk и ничего (заметно) не получилось ....
Я написал этот сценарий, чтобы «углубиться» в повторяющиеся каталоги (в каталог с именем «a»), переместить их (в каталог с именем «b»), затем удалить усеченное дерево, переместить их обратно (в «a») и повторите:
Remdirs.bat
Это просто вызов для повторного запуска командного файла.
источник
У нас была такая проблема на работе, когда Eclipse решила создать мусор на жестких дисках. Мы исправили это, используя функцию Robocopy / MIR для зеркалирования пустого каталога во вложенный.
источник
Я бы попробовал открыть командную строку и запустить:
Если это не сработает, я частично зайду в дерево каталогов и попытаюсь удалить подмножество каталогов - скажем, 20 самых внутренних каталогов - и затем оттуда выхожу.
источник
;-)
Если это сетевая папка, просто поделитесь родительским каталогом этого каталога и сопоставьте его с диском на вашем локальном компьютере, а затем удалите вашу папку.
источник
Откройте командную строку.
Перейдите к папке / каталогу, который содержит самый высокий 'dir1' (предположим, C: \)
Изменить (после добавления комментариев) :
Другие идеи:
MS предлагает информацию о том, как решить проблему (множество идей, чтобы попробовать) здесь .
Также есть этот инструмент (никогда не использовал его лично) - TooLongPath .
Возможно, напишите что-нибудь (поскольку у вас есть Eclipse), которое полностью перемещается, а затем откатывает назад по одному уровню папок за раз, удаляя по ходу дела?
источник
Другое решение: иди скачай Total Commander. Это очень полезная программа, не только потому, что она знает длинные имена файлов.
Незарегистрированная версия - nagware, но полностью функциональная, она сделает свою работу.
источник
Это можно сделать непосредственно из командной строки или в пакетном файле, создав UNC-путь к каталогу, который вы хотите удалить.
так вместо
использование
Такие пути в стиле UNC могут быть намного длиннее и обходить ограничение в 260 символов.
источник
The path \\?\C:\temp\wqiyretiuqyertiuyqwteiyrutqwuiyertiqrqweirqyert\wqteriuwqyetriuqwteiryutwiuertiuyqerieerrt\IOQWUE~1\QIWUYE~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\ OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1\OIUQYW~1 is too long.
Windows 7 64-битная.Когда у меня возникает эта проблема, я просто переименовываю некоторые имена папок намного короче, а затем, когда общий путь становится достаточно коротким, он удаляет OK. Никаких дополнительных инструментов не требуется.
источник
ren
команда не удастсяpath too long
.У меня была та же проблема, за исключением того, что она была создана рекурсивной задачей Cobian Backup. Я выяснил, что бесплатное программное обеспечение Cobian включает приложение Deleter, которое может легко и быстро быстро удалить эти надоедливые вложенные папки.
Он расположен под меню инструментов.
источник
Я столкнулся с той же проблемой с беспорядком папки более 5000 каталогов, что и некоторые Java-приложения, и я написал программу, которая поможет вам удалить эту папку. Весь исходный код находится по этой ссылке:
https://gitlab.imanolbarba.net/imanol/DiREKT
Через некоторое время все это удалилось, но удалось справиться со своей задачей, я надеюсь, что это поможет людям, которые (как и я) сталкиваются с одной и той же неприятной проблемой.
источник
Ваша файловая система может быть повреждена. Запустите chkdsk, чтобы увидеть, восстанавливает ли он что-либо, затем попробуйте удалить папку.
источник
MAX_PATH=255
). Это может произойти даже с не поврежденной файловой системой.