Каков наилучший способ удалить 100 000 файлов из каталога Windows


12

У меня был пользователь с более чем 100 000 файлов в одном каталоге. Машина блокируется и перестает работать в течение длительного времени, в то время как Explorer заполняет память, и машина может выйти из строя. Есть ли простой способ сброса каталога и содержимого? Мы попытались использовать командную строку deltree, и это не показалось мне намного лучше.

DaveF

Extra -

У нас была эта проблема несколько раз с одним и тем же пользователем (фактически клиентом). Программа создает сотни тысяч временных файлов во время работы. Если программа работает правильно, это не имеет значения, поскольку они удаляются, замедляя, как это закончено с этим. Но время от времени это умирает, оставляя беспорядок файлов. Мы пробовали использовать методы rmdir, del и т. Д., И они быстрее, чем с помощью проводника, но в целом мы сталкиваемся с теми же проблемами. Поврежден раздел, есть необъяснимый заблокированный файл, у какого-то файла есть проблема с правами доступа, которая мешает удалению работать. Обычно эти проблемы можно решить с помощью перезагрузки, но в этом случае, поскольку это критическая система, которую мы не можем использовать во время производства. В Unix вы можете просто выполнить команду rm -rf и т. Д., И это быстро, и, как правило, с этим проблем нет.

КСТАТИ - приложение меняется, но это не будет запущено в течение некоторого времени, и я, хотя эта проблема, вероятно, была интересна для других.

Обновление - потому что у нас в системе есть MKS Nutcracker (без утилит командной строки), мы заставили программиста собрать простой rm. Это на несколько порядков быстрее, чем del / deltree и т. Д. Мне кажется странным, что не существует такого простого приложения, доступного в качестве стандартного инструмента администрирования Windows.


Ответы:


15

Вы можете использовать rmdir:

rmdir /s /q FOLDERNAME

Флаги: /sозначает рекурсивное удаление, /qэто «тихий» режим.


Мы попробовали это - я добавлю больше к вопросу.
Дэвид Аллан Финч

это должно было сработать для вас. Это сработало?
s_ruchit

да в основном - я добавил, какие проблемы мы видели выше в этом вопросе. Спасибо за ваш комментарий.
Дэвид Аллан Финч

Я собираюсь принять этот ответ. Но есть лучшее решение, которое заключается в использовании более простого rm в стиле Unix, но поскольку это недоступно большинству пользователей, это лучший выбор для 99% пользователей. Должен быть реализован стиль Unix rm для окон, который делает только рекурсивное удаление. Кстати, наши программисты MKS remove_tree (см. Выше) избили rmdir, так что проблема не в Windows, а во встроенных приложениях.
Дэвид Аллан Финч

6

Я использую, чтобы иметь эту проблему с серверами, которые я администрировал. Пропустите проводник и используйте командную строку. Перейдите к папке и «Del . »

Таким образом вы избежите накладных расходов с графическим интерфейсом (мусорщик - мусор) и мусорным баком.


Мы попробовали это - я добавлю больше к вопросу.
Дэвид Аллан Финч

4

Если это не требуется для устаревших 16-разрядных приложений, попробуйте повысить производительность, отключив создание коротких имен файлов. Это может оказать значительное влияние на операции с каталогами с большим количеством файлов.

Regedt32 select:
"HKLM\system\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameC
reation"=1

Тогда используйте:

RMDIR / S / Q [диск:] путь

удалить каталог со всеми его файлами.


Это интересно знать.
Дэвид Аллан Финч


3

Как насчет перемещения этой временной папки на другой диск / раздел? Вместо удаления всего мусора, вы можете отформатировать диск (графический интерфейс или командную строку). С быстрым форматированием это должно быть достаточно быстро.


1
Мы пробовали это, и иногда это не позволяло. Клиент теперь каждый раз запускает программу в другом каталоге.
Дэвид Аллан Финч

Создайте жесткую ссылку между путем и диском, то есть: жесткая ссылка «c: \ my глупое приложение \, где хранятся файлы» указывает диск X: в пакете запуска
Nime Cloud

2

Это сочетание предыдущих постов

откройте командное окно:
File -> Run -> cmd

Удалить каталог
rmdir /s /q FOLDERNAME

ИЛИ ЖЕ

Удалить шаблон файлов
cd \....\directory
del *.[something]

Как вы отметили в своем вопросе, проводник Windows может сильно замедлить работу.

После просмотра вашего обновления, у меня есть один из моих собственных
Проверьте этот список файлов для удаления


В прошлом я заметил это только с несколькими сотнями файлов. Жаль, что проводник может сделать это так же быстро, как приложения командной строки - они могут заставить клиента сделать это самостоятельно. Спасибо за Ваш ответ.
Дэвид Аллан Финч

1

У меня нет ничего лучше, чем del и rm, но даже если они занимают очень много времени, это не должно привести к повреждению раздела. Заблокированные файлы могут быть вызваны тем, что программа, которая их создала, неожиданно умерла.

Иногда, даже если файлы не могут быть удалены, их можно переместить в другой временный подкаталог. Я просто создаю подкаталог _todel и перемещаю их туда. Обычно это работает лучше, если я перемещаю весь каталог на один уровень выше, чем сами файлы.

Кроме этого, единственный способ ускорить удаление - это дефрагментировать жесткий диск. Временным обходным путем может быть перемещение этого каталога в общий ресурс samba или использование NTFS-перехода на переносной жесткий диск USB. (Небольшой раздел будет лучше и быстрее, чем весь жесткий диск). Затем вы можете просто извлечь жесткий диск и выполнить быстрое форматирование на другом ПК.


Вот что я думаю - IE поврежденные файлы, но почему они не закрываются ядром NT? Скорость - проблема с программой, поэтому использование Samba или жесткого диска USB не является началом. Но клиенту было предложено создать отдельный раздел для каждого запуска и переформатировать. Не уверен, что они уже попробовали это. - Спасибо
Дэвид Аллан Финч

1

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

Я бы попробовал в командной строке удалить и удалить столько, сколько вы можете, пока не встретите тот, который заблокирован. Затем используйте Process Explorer, чтобы найти, какой процесс имеет этот открытый файл. Убейте этот процесс (если можете), а затем снова удалите. Промыть, повторить :)


Хотелось бы попробовать это, но у нас нет прямого доступа к машине, и приложение умерло. Спасибо, в любом случае.
Дэвид Аллан Финч

1

Перезагрузитесь с помощью «живого» Linux CD, rm -rf


Мы не можем просто перезагрузить этот сервер, так как это важно для клиента, но спасибо за ответ.
Дэвид Аллан Финч

1

Что-то вроде хаки, но вы можете создать скрипт, который будет удалять файлы, я не знаю формат, но если предположить, что это файлы, начинающиеся с букв az, вы можете сделать

deltree /y a*
deltree /y b*
...
deltree /y z*

измените deltree с вашим методом удаления по выбору. вероятно, будет медленнее, но менее подвержен ошибкам?

sidenote: вы также можете попробовать установить cygwin, чтобы получить такие команды, как rm, которые, вероятно , продолжат удалять файлы, даже если он обнаружит ошибку с одним файлом.


Это было опробовано, но это не решило проблему - в любом случае, спасибо.
Дэвид Аллан Финч

У нас также установлен MKS Nutcracker, но по соображениям безопасности утилиты командной строки были удалены - не выбор. Но то, что мы сделали, выписали собственный rm, и это работает.
Дэвид Аллан Финч

1

Различные методы прежде всего работают. Если у вас есть cygwin, загруженный на флэш-накопитель, вы можете просто подключить его к локальному USB, запустить оболочку cygwin и запустить команду RM, как указано выше. Это удобный способ держать гибкость Unix под рукой.


Это разумное решение, когда вы управляете системой.
Дэвид Аллан Финч

1

Вы также можете загрузить консоль восстановления или что-то в этом роде. Это должно полностью игнорировать любые странные проблемы с ОС.


Извините, мы не можем просто перезагрузить сервер, но спасибо за ответ.
Дэвид Аллан Финч

1

Смонтируйте папку с машины Linux и выполните рекурсивное удаление оттуда.

# mount -t cifs //server/share /mnt/tobedeleted -o username=yourshareusername

# rm /mnt/tobedeleted/* -R

Вы даже можете использовать задание cron для удаления файлов через регулярные промежутки времени.


ты пробовал это?
Дэвид Аллан Финч

1

Почему бы просто не использовать robocopy и зеркалировать пустой каталог?

Просто создайте пустую папку, а затем используйте:

ROBOCOPY C:\ThisIsAnEmptyFolder C:\Users\SomeUser\Desktop\SomeFolderWithTempFiles /MIR

0

Если ни одно из других предложений не работает, рассмотрели ли вы вопрос ускорения ввода-вывода?

Покупайте более качественные контроллеры, более быстрые диски ..

Или мне интересно, если файлы временные (как вы подразумеваете) и размеры позволяют, вы могли бы добавить дополнительную оперативную память в коробку (дешево) и настроить диск RAM?

В лучшем случае производительность не будет снижена при удалении больших объемов файлов. В худшем случае перезагрузка очистит раздел.


Люблю, но я не думаю, что клиент выложится, так как он ожидает новую версию программы - спасибо за ответ.
Дэвид Аллан Финч

Оперативная память сервера в Великобритании в настоящее время составляет около 10 фунтов стерлингов за гигабайт.
tomfanning

Правда, клиент платит X за машину (из цитаты) и не видит причин тратить больше Y.
Дэвид Аллан Финч

Поскольку указанный сервер не выполняет работу достаточно хорошо?
Суббота,

Это достаточно хорошо для работы. Проблема в том, что в программе есть ошибка, которая находится в процессе исправления. Они не собираются больше тратить деньги.
Дэвид Аллан Финч

0

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


Я думаю, что клиент попробовал это, и это было не намного лучше, чем обычное использование Explorer. Спасибо
Дэвид Аллан Финч

0

Влияет ли удаление с SHIFT + DEL на скорость?


Когда я попробовал это в последний раз, это было почти то же самое.
Дэвид Аллан Финч

На самом деле я только что попробовал это снова - со старой установкой, и я все еще жду. Я, вероятно, сдамся и использовал MKS RM.
Дэвид Аллан Финч
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.