Назад | Перейти на главную страницу

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

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

DaveF

Экстра -

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

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

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

Вы могли бы использовать rmdir:

rmdir /s /q FOLDERNAME

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

У меня была проблема с серверами, которыми я управлял. Полностью пропустите проводник и используйте командную строку. Перейдите в папку и нажмите "del ."

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

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

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

Затем используйте:

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

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

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

Это комбинация предыдущих постов

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

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

ИЛИ

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

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

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

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

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

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

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

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

Перезагрузитесь, используя Live CD Linux, команду rm -rf

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

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

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

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

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

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

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

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

# rm /mnt/tobedeleted/* -R

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

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

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

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

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

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

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

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

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

Какая разница в скорости при удалении с помощью SHIFT + DEL?