Есть ли способ удалить папку в Windows, не затрачивая время пропорционально количеству файлов в ней?
Ну да, отформатируй раздел. Я немного удивлен, что никто не предположил, что в предыдущие 9 лет.
Это довольно радикально, но если вы планируете делать это часто для определенной папки, возможно, стоит создать для нее отдельный раздел.
Если это слишком радикально, другие ответы - ваша единственная надежда. Есть хорошее объяснение, почему на сервере произошла ошибка . Это для файловых систем Linux и XFS, но здесь применяется та же логика. Вы не можете значительно улучшить встроенные функции ОС.
Однако, если вам известны пути ко всем файлам, которые вы хотите удалить, вы можете сэкономить на вызовах, которые перечисляют содержимое каталога и вызывают удаление напрямую, сохраняя некоторые накладные расходы. Тем не менее, пропорционально количеству файлов.
Лично мне нравятся некоторые из отчетов о проделанной работе, чтобы убедиться, что программа не умерла. Поэтому я люблю удалять вещи через Python. Например, если все файлы находятся в одном каталоге без подкаталогов:
import tqdm
import sys
import os
location = sys.argv[1]
directory = os.fsencode(location)
with os.scandir(directory) as it:
for dir_entry in tqdm.tqdm(it):
try:
os.remove(dir_entry.path)
except OSError:
pass # was not a file
Это удаляет около 250 файлов / с на моем 12-летнем SEAGATE ST3250620NS. Я предполагаю, что это будет намного быстрее на вашем диске.
Однако на данный момент это просто микрооптимизация, поэтому ничего не поделаешь, если у вас нет миллионов файлов в одном каталоге. (как я, LOL, что я сделал D :)