На одном из наших файловых серверов Windows 2003 кто-то или что-то сумел создать бесконечно повторяющиеся деревья каталогов в некоторых из домашних папок пользователей, и они не могут быть удалены.
Вы получаете что-то вроде этого:
D:\Student\2012\user.name\servername\student\2012\user.name\servername\student\2012\...
И это продолжается бесконечно, насколько я могу судить.
Попытка удалить дерево каталогов из системы приводит к появлению сообщения «Ошибка удаления файла или папки: невозможно удалить файл:». Попытка удалить его из системы Windows 7, подключенной к сетевой папке, приводит к ошибке «папка используется».
Если вы перемещаетесь вниз по дереву каталогов, то в конечном итоге вы получаете каталог, который нельзя открыть или удалить (если щелкнуть правой кнопкой мыши, ни один из стандартных параметров не появится), однако, если вы попытаетесь открыть тот же каталог из общего ресурса в другой системе его можно открыть, однако Windows Explorer становится очень медленным.
Я попробовал предложения в этом посте, а также загрузил сервер с диска Linux и попытался найти каталог в rm -rf, но ничего не получилось.
Это загадка
Изменить: Я также могу добавить, что можно переименовать каталоги, но не удалять их.
Ответы:
У меня также была бесконечно рекурсивная папка, созданная java IDE, и я не смог удалить ее ни в проводнике Windows, ни в командной строке cmd.
Однако, когда я установил git, я также установил git-bash. В git-bash вы можете выполнить команду:
и это позаботится об этом.
источник
Возможно, что где-то есть символическая ссылка на папку, скорее всего, вторая
student
в вашем пути.Попробуйте выполнить команду:
и посмотрите,
student
помечен ли он как DIR или SYMLINK / JUNCTION.Например, это типичный вывод
dir
команды:Вы видите, что первые две записи помечены как
DIR
, а третья (символическая ссылка на другую папку) помечена какSYMLINKD
. В вашем случае (Windows 2003) я думаю, что естьJUNCTION
s вместоSYMLINK
s.Если
student
папка является символической ссылкой или соединением, выполните команды:и таким образом избавиться от рекурсии.
источник
Вполне возможно, что кто бы ни работал в этой папке, ему удастся создать точку соединения, которая вернется из цикла
user.name
вservername
, создавая, таким образом, дерево каталогов «бесконечный цикл».Пересечения - это функция файловой системы NTFS, которая позволяет создавать символическую ссылку на каталог, который действует как псевдоним для каталога. http://en.wikipedia.org/wiki/NTFS_junction_point
В разделе «Наблюдаемые эффекты» на вики-странице вы можете увидеть проблему, которую вы описываете.
Попробуйте запустить эту утилиту, чтобы получить список соединений на этом сервере:
http://technet.microsoft.com/en-us/sysinternals/bb896768
Это также должно дать вам возможность удалить точку соединения.
источник
У меня была похожая проблема, когда Eclipse создал очень глубокое дерево папок, которое я не мог удалить. Однако, так как было возможно перемещать и переименовывать папки, я написал пакетный файл для работы, он спустился по дереву, удаляя папки по одной за раз, и это сработало! Для очевидно бесконечно глубокого дерева папок FOLDERNAME в каталоге C, т.е.
Пакетный файл:
Это работает, потому что TEMPFOLDERNAME теперь является деревом конечной длины (одна папка, в которой ничего нет), а в массивном дереве FOLDERNAME каждый раз при запуске цикла появляется на одну папку меньше, в конечном итоге достигнув дна, удалив папку сверху.
источник
Я столкнулся с той же проблемой с беспорядком папки более 5000 каталогов, что и некоторые Java-приложения, и я написал это:
https://gitlab.imanolbarba.net/imanol/DiREKT
Через некоторое время все это удалилось, но ему удалось выполнить работу, я надеюсь, что это поможет людям, которые (как и я) сталкиваются с одной и той же неприятной проблемой.
источник
Решил мои бесконечные циклы каталогов с помощью этого скрипта:
источник
У меня такая же проблема. Папка, которую я хотел удалить, содержала бесконечное дерево ссылок на одно и то же имя, и каждая попытка удалить его вызвала ошибку Windows «Файл слишком длинный ...». Это не удалось независимо от команды, которую я пытался включить все вышеупомянутые методы, поэтому я попробовал команду Cygwin «rm» в окне cmd чуть выше рассматриваемой папки. Я ввел «rm -r -f [папка]» и папка была удалена без жалоб.
Вы можете скачать Cygwin бесплатно с https://cygwin.com/install.html . По сути, это оболочка UNIX для Windows, которая содержит все общие команды (например, ls, rm, du и cat), но также имеет массу пакетов, которые, если все они будут загружены, занимают около 1 ГБ пространства. Я считаю, что пакет загрузки по умолчанию включает в себя команды UNIX. Если нет, они находятся в комплекте «utils», если память служит.
ПРИМЕЧАНИЕ. Вам не нужно запускать команды Cygwin в собственном окне оболочки bash. Их можно запустить в окне cmd, добавив путь к каталогу «bin» cygwin в системную переменную среды PATH. В моем случае я добавил "C: \ cygwin64 \ bin".
Надеюсь, это поможет.
источник
У меня такая же проблема здесь.
В других сообщениях было предложено отразить пустую папку в целевой папке через сетевой ресурс с помощью MS RoboCopy.
В этот момент я запускаю это, с "> nul" для ускорения (это действительно так):
«C: \ TEMP» - пустая папка, а «W: \ TMP» - уязвимая папка:
robocopy / mir c: \ temp \ 127.0.0.1 \ w $ \ tmp> nul
источник
У меня тоже было это, на автономной системе Windows 10. C: \ User \ Name \ Repeat \ Repeat \ Repeat \ Repeat \ Repeat \ Repeat \ Repeat, по-видимому, до бесконечности.
Что касается OP, я мог перейти с помощью Windows или командной строки примерно на 50-й и не дальше. Я не мог удалить его или щелкнуть по нему и т. Д. В точности так, как описано.
C - мой язык, поэтому в конце концов я написал программу с циклом системных вызовов, которые повторяются до тех пор, пока не завершатся неудачей. Согласно коду DOS от JohnO, я создал каталог с именем tmp и переместил туда Repeat \ Repeat, удалил пустую папку Repeat и переместил tmp \ Repeat обратно в текущую папку. Снова и снова!
ChkSystem просто выполняет вызов system () и проверяет возвращаемое значение, останавливаясь, если оно не удалось.
Важно отметить, что это не удалось несколько раз. Я подумал, что, возможно, моя программа не работает или что она все равно бесконечно длинная. Однако, у меня было это раньше с системными вызовами, с вещами, которые не синхронизировались, поэтому я просто запустил программу снова, и она продолжилась с того места, где она остановилась, так что не думайте, что ваша программа не работает. В общей сложности, после запуска около 20 раз, он очистил их всех. В общей сложности изначально было около 1280 папок. Понятия не имею, что вызвало это. Сумасшедший.
источник
С 3-уровневыми циклами каталогов:
источник
Я исправил это, запустив chkdsk / f через консоль администратора, перезагрузил и затем удалил проводник. Хотя Windows жаловалась на длинный файл / папку, она избавилась от проблемной рекурсивной папки, как только я подтвердил удаление.
Не уверен, что есть другие проблемы, которые я мог создать, используя старый параметр chkdsk в моей файловой системе Windows 7 Pro.
источник
Для меня этот вариант метода Windows RoboCopy работал:
Да, это требует времени, но сделал свою работу.
источник
Просто запустите MS ROBOCOPY следующим образом:
, , , , , , , , , , , , , , ,
РОБОКОПИЯ "C: \ anyplace \ BADFOLDER" "C: \wherever \ BADFOLDER" / MIR
Куда:
C: \ anyplace \ BADFOLDER .. "пустая папка", которую вы создали, и
C: \ wherever \ BADFOLDER .. - это папка, в которой находится «бесконечно повторяющееся дерево каталогов».
, , , , , , , , , , , , , , ,
После запуска ROBOCOPY .. Теперь у вас есть два "пустых" ПЛЕМЕНА.
Чтобы очистить, удалите оба
C: \ где угодно \ BADFOLDER и C: \ везде где \ BADFOLDER
источник