Есть ли способ удалить папку в Windows, не затрачивая время пропорционально количеству файлов в ней?
Я так не думаю, но некоторые методы явно намного быстрее, чем другие.
Худший способ - отправить в корзину: вам все равно нужно их удалить. Следующий худший - это 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 минуты. Больше информации здесь.
Для меня это обычная задача, поэтому я обычно перемещаю материал, который мне нужно удалить, в C:\stufftodelete, и эти команды del+rmdir
помещаются в командный файл deletestuff.bat. Запуск запланирован на ночь, но иногда мне нужно запускать его днем, поэтому чем быстрее, тем лучше.