У меня есть Windows XP с NTFS-диском, и удаление большого количества файлов происходит очень медленно. Если я выбираю папку с большим количеством файлов в дереве папок и удаляю (используя shift-del для сохранения корзины), требуется время, которое кажется прямо пропорциональным количеству файлов в папке, прежде чем оно даже всплывает окно подтверждения. Затем для удаления каждого файла в папке требуется еще больше времени.
Есть ли способ удалить папку в Windows, не затрачивая время пропорционально количеству файлов в ней?
Ответы:
Я так не думаю, но некоторые методы явно намного быстрее, чем другие.
Худший способ - отправить в корзину: вам все равно нужно их удалить. Следующий худший - это Shift + Delete в Windows Explorer: он тратит кучу времени на проверку содержимого, прежде чем начать что-либо удалять.
Далее лучше всего использовать
rmdir /s/q foldername
из командной строки.del /f/s/q foldername
это тоже хорошо, но это оставляет структуру каталогов.Лучшее, что я нашел, - это двухстрочный пакетный файл с первым проходом для удаления файлов и вывода в nul, чтобы избежать издержек записи на экран для каждого отдельного файла. Второй проход очищает оставшуюся структуру каталогов:
Это почти в три раза быстрее, чем один rmdir, основываясь на временных тестах с зашифрованным диском Windows XP, удаляющих ~ 30 ГБ / 1 000 000 файлов / 15 000 папок:
rmdir
занимает ~ 2,5 часа,del+rmdir
занимает ~ 53 минуты. Больше информации здесь .Это обычная задача для меня, поэтому я обычно перемещаю материал, который мне нужно удалить, в C: \ stufftodelete и помещаю эти
del+rmdir
команды в командный файл deletestuff.bat. Запуск запланирован на ночь, но иногда мне нужно запускать его днем, поэтому чем быстрее, тем лучше.источник
> nul
Ну да, отформатируй раздел. Я немного удивлен, что никто не предположил, что в предыдущие 9 лет.
Это довольно радикально, но если вы планируете делать это часто для определенной папки, возможно, стоит создать для нее отдельный раздел.
Если это слишком радикально, другие ответы - ваша единственная надежда. Есть хорошее объяснение, почему на сервере произошла ошибка . Это для файловых систем Linux и XFS, но здесь применяется та же логика. Вы не можете значительно улучшить встроенные функции ОС.
Однако, если вам известны пути ко всем файлам, которые вы хотите удалить, вы можете сэкономить на вызовах, которые перечисляют содержимое каталога и вызывают удаление напрямую, сохраняя некоторые накладные расходы. Тем не менее, пропорционально количеству файлов.
Лично мне нравятся некоторые из отчетов о проделанной работе, чтобы убедиться, что программа не умерла. Поэтому я люблю удалять вещи через Python. Например, если все файлы находятся в одном каталоге без подкаталогов:
Это удаляет около 250 файлов / с на моем 12-летнем SEAGATE ST3250620NS. Я предполагаю, что это будет намного быстрее на вашем диске.
Однако на данный момент это просто микрооптимизация, поэтому ничего не поделаешь, если у вас нет миллионов файлов в одном каталоге. (как я, LOL, что я сделал D :)
источник
Установите
gnutools for windows
и запустите:источник
Убедитесь, что вы не копируете файлы в облако и не пытаетесь удалить их одновременно!
Со многими решениями облачного резервного копирования файлы будут заблокированы во время резервного копирования, а затем вам придется ждать их резервного копирования.
Если у вас возникла эта проблема, скажем, с временным каталогом (или чем-то, что не требует резервного копирования), убедитесь, что временный каталог не выбран в вашем наборе резервных копий.
источник
Я обнаружил, что папки с несколькими слоями каталогов действительно сильно замедляют способность Window быстро их удалять. Я работал над проектом, где потребовалось 5 уровней, чтобы добраться до папки node_modules, которую всегда нужно удалить, даже если
В этой ситуации я в конечном итоге перехожу к папке node_modules или любой другой каталог с самыми глубокими уровнями и просто начинаю выбирать и удалять около дюжины каталогов за раз. Если я получу несколько удалений, это заставит корзину работать в параллельных процессах, а не в единственном потоке, который, как я считаю, использует, значительно ускоряет процесс.
Когда мой самый глубокий каталог пуст, я поднимаюсь на несколько уровней и делаю то же самое. Это сократило количество удалений, которые заняли у меня от часа до нескольких минут.
Это очень ручной процесс, и, вероятно, он может быть выполнен с некоторым успехом, но это то, что работает для меня
источник
Я использовал оригинальный ответ Хьюго для создания файла .bat, который я использую при удалении проектов NPM. Я добавил переменную пути и должен только скопировать и вставить путь один раз. Дважды щелкните файл .bat, и он сделает всю работу - не нужно вводить все.
Пример использования:
источник
Вы пытались использовать командную строку
rmdir /s /q foldername
все большие операции с файлами в графическом интерфейсе выполняются медленно - в основном потому, что визуальная обратная связь (индикатор выполнения) приходится много раз перекрашивать
источник