Какой самый быстрый способ удалить большую папку в Windows?

224

Я хочу удалить папку, содержащую тысячи файлов и папок. Если я использую проводник Windows для удаления папки, это может занять 10-15 минут (не всегда, но часто). Есть ли в Windows более быстрый способ удаления папок?

Другие детали:

  • Меня не волнует мусорная корзина.
  • Это диск NTFS.
BrezzaP
источник
1
Также спросили здесь на Супер пользователя: superuser.com/questions/19762/mass-deleting-files-in-windows/…
Hugo
1
Может быть, rm -rf в cygwin быстрее, а может быть, linux live cd rm -rf еще быстрее.
Бароп
используя cygwin ls DIRECTORY> list_files, выполните итерацию над list_files и используйте rm -rf (работает с пулом файлов размером 1 ТБ и работает хорошо)
gnuyoga
Ребята, я не уверен, что это то же самое, что есть у всех остальных ... но если я удаляю большую папку, а затем отменяю ее, пока она удаляет папку, корзина пуста. Не уверен, почему это работает, но это для меня.
Ladieu

Ответы:

333

Используйте командную строку Windows:

rmdir /s /q folder
Стивен Денн
источник
22
Кстати, вы также можете использовать rd / q / s <foldername>, однако, хотя это быстрее, чем графическое представление в Windows Explorer, это все еще займет много времени - MS использует алгоритм «Schlemeil the Painter» (joelonsoftware. ru / article / fog0000000319.html) в любое время, когда готовится dir или del
Уоррен
37
Папка rm -rf работает чудесно быстро, если у вас установлен Cygwin.
Синан Юнюр
45
Раньше я использовал это, но я нашел комбинацию del + rmdir почти в три раза быстрее, чем обычный rmdir. Смотрите мой ответ: stackoverflow.com/questions/186737/…
Гюго
2
Предложение Синан является самым быстрым. Установите cygwin.com, затем используйте команду rm -rfv folderName из командной строки cygwin.
Лонни Бест
1
+1 на Cygwin, который делает связь со структурой, немного быстрее, чем это делают инструменты Windows, хотя и не так безопасно.
Tracker1
975

Худший способ - отправить в корзину: вам все равно нужно их удалить. Следующий худший - это Shift + Delete в Windows Explorer: он тратит много времени на проверку содержимого, прежде чем начать что-либо удалять.

Далее лучше всего использовать rmdir /s/q foldernameиз командной строки. del /f/s/q foldernameэто тоже хорошо, но это оставляет структуру каталогов.

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

del /f/s/q foldername > nul
rmdir /s/q foldername

Это почти в три раза быстрее, чем один rmdir, основываясь на временных тестах с зашифрованным диском Windows XP, удаляющих ~ 30 ГБ / 1 000 000 файлов / 15 000 папок: rmdirзанимает ~ 2,5 часа, del+rmdirзанимает ~ 53 минуты. Больше информации на Super User .

Для меня это обычная задача, поэтому я обычно перемещаю материал, который мне нужно удалить, в C: \ stufftodelete и помещаю эти del+rmdirкоманды в командный файл deletestuff.bat. Запуск запланирован на ночь, но иногда мне нужно запускать его днем, поэтому чем быстрее, тем лучше.

Техническую документацию по delкоманде можно найти здесь . Дополнительная информация о параметрах, использованных выше:

  • /f - Принудительно (т.е. удалять файлы, даже если они только для чтения)
  • /s- Рекурсивные / Включить подпапки (это определение из SS64 , так как technet просто утверждает «указанные файлы», что не полезно).
  • /q - Тихо (т.е. не запрашивать у пользователя подтверждение)

Документация для rmdir здесь . Параметры:

  • /s - Рекурсивно (то же самое, что параметр del / s)
  • /q - Тихий (т.е. такой же, как параметр del's / q)
Хьюго
источник
1
Я попробовал это сегодня (по общему признанию на меньшем наборе данных) и получил противоположный результат: использование только rmdir было на 30% быстрее (3:17), чем использование del и затем rmdir (2:15).
Гарри Джонстон
6
Мне нужно было «Запуск от имени администратора», чтобы заставить это работать, в зависимости от диска.
Эяль
1
Как насчет использования Cygwin. Я знаю, что это слой поверх Windows, но может ли мир Linux помочь нам лучше обслуживать?
сарат
1
Это отлично сработало для меня. Он удалил около 16 ГБ, пару сотен тысяч файлов за секунды в Windows 7. ОС некоторое время зависала, прежде чем я сдался и начал поиск здесь.
Engineero
4
Отличное и элегантное решение, могу ли я предложить упростить команду с помощью командной оболочки ampersand: Выполнить команды подряд: del /f/s/q foldername > nul & rmdir /s/q foldername или Выполнить команды подряд, только если первая команда успешна. del /f/s/q foldername > nul && rmdir /s/q foldername
GBGOLC
6

используйте fastcopy , бесплатный инструмент. у него есть опция удаления, которая намного быстрее, чем способ, которым Windows удаляет файлы.

Стивен Денн
источник
1
Я попробовал FastCopy. не уверен, что это быстрее, чем Windows, я только удалял 92 файлов в секунду. Учитывая, что я перестал считать количество файлов более 250 КБ, мне понадобится вечно использовать его ... Ну, хорошо. Каждый файл размером всего 20 байтов. Черт возьми файлы сессий PHP.
Chrispix
1
попробуйте бесплатный инструмент с открытым исходным кодом RapidDeletePro: github.com/mhisoft/RapidDeletePro
Тони
3

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

Кроме того, проводник остановится, если есть какая-то проблема с файлом,

nicodemus13
источник
3

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

1) создайте текстовый файл со следующим содержимым, заменив имена папок в кавычках именами папок:

rmdir /s /q "My Apps"  
rmdir /s /q "My Documents"  
rmdir /s /q "My Pictures"  
rmdir /s /q "My Work Files"

2) сохраните командный файл с расширением .bat (например, deletefiles.bat).
3) откройте командную строку (Пуск> Выполнить> Cmd) и запустите командный файл. Вы можете сделать это так из командной строки (заменив букву X на букву диска):

X:  
deletefiles.bat
хуг
источник
2
Да, у меня есть похожий пакетный файл, но я нашел комбинацию из del + rmdir быстрее всего: stackoverflow.com/questions/186737/…
Hugo
-1

Попробуйте Shift+ Delete. Сделал 24.000 файлов за 2 минуты для меня.

Йерун
источник
13
См. Выше - избегает корзины, но все же намного медленнее, чем командная строка.
andig
1
Этот метод будет удалять файлы напрямую, а не перемещать их в корзину, но проводник по-прежнему будет пытаться подсчитать все файлы, чтобы получить оценку, для которой требуются возрасты для больших папок (> 100 тыс. Файлов)
uceumern
какой был средний размер файла?
your_boy_gorja
@your_boy_gorja проблема не в среднем размере файла, а в количестве файлов в папке. Когда вы удаляете с помощью Проводника, Исследователю необходимо прочитать все файлы, чтобы получить размер и попытаться сделать оценку
Vinicius Monteiro
@uceumern да, это подсчет, который он делает, просто смешно с папкой со многими, многими файлами (~ 40 ГБ с файлами 1м +)
Брайан Лейшман