Чи є спосіб видалити папку в 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. Я припускаю, що це буде набагато швидше на вашому приводі.
Однак на даний момент це лише мікрооптимізація, тому не буде багато чого, якщо у вас в одному каталозі мільйони файлів. (як я, хаха, що я зробив D :)