Швидке видалення складних каталогів

Останнє оновлення: 02 / 26 / 2020

Зазвичай видалення каталогів відбувається досить швидко, якщо вони містять скромну кількість підкаталогів і файлів. Але якщо каталоги мають складні структури, що складаються з сотень чи тисяч підкаталогів і файлів, їх видалення може зайняти кілька хвилин або навіть години. Командний рядок із меншими накладними витратами може видаляти складні каталоги за частину того часу, іноді цитується як такий 20 разів і більше швидше ніж традиційний варіант провідника. У цьому посібнику показано, як автоматизувати видалення великих каталогів за допомогою пакетних файлів або командного рядка, використовуючи нативні команди та інструменти Windows. Додатковий розділ охоплює безкоштовні програми видалення GUI, що мають компонент CLI. Основна увага в цьому посібнику робиться на методах швидкого видалення, а не на безпечних або постійних методах видалення, які використовуються для неможливості відновлення файлів. Безпечні методи видалення - ще одна тема, і вони обов'язково повільніші, оскільки вони включають в себе перезапис файлів, часто використовуючи кілька пропусків.

видаляти

Провідник може бути надзвичайно повільним при видаленні каталогів, оскільки він обчислює розмір папки, кількість елементів у папці та передбачуваний час завершення перед обробкою, а також звітує про видалені елементи, що залишилися видалення, поточні видалення та під час моніторингу та звітування про будь-які конфлікти під час обробки. Ці процеси продовжують діяти навіть тоді, коли кошик спорожняється або коли файли та папки видаляються безпосередньо за допомогою Shift + Del. Використання командного рядка усуває цю накладну, що призводить до швидшого процесу видалення. Майте на увазі, що швидше означає відносно стандартного процесу видалення, тому для видалення декількох гігабайт файлів і каталогів все ж може знадобитися значна кількість часу. Наприклад, тести, виконані a SuperUser учасник виявив, що на видалення 53 ГБ, що складається з 28.3 1,159,211 файлів у 146,918 XNUMX папках, використовується метод швидкого тестування командного рядка (комбінація команд DEL і RMDIR) в середньому XNUMX хвилини. Якщо файли та папки потрібно регулярно видаляти, мабуть, найшвидший спосіб - зберегти їх на спеціальному розділі, а потім відформатувати цей розділ, щоб видалити все.

Команди

Хоча команда RMDIR може видалити каталог та його файли, це значно повільніше, ніж використання команд DEL та RMDIR у двоступеневому процесі. Команда DEL видаляє файли, а команда RMDIR видаляє структуру каталогу.

del /f/q/s "%folder%" >nul

Діє як перший прохід для видалення файлів, а виходи - до нуля, щоб уникнути накладних витрат на запис на екран

rmdir /q/s "%folder%"

2-й прохід, який видаляє структуру каталогу

  • / f - змусити видалити файли лише для читання
  • / q - Тихий режим, не вимагайте видалення
  • / s - включити підкаталоги

RoboCopy

Ще один спосіб видалення файлів папок - RoboCopy. Цільова папка відображається з порожнього каталогу джерел, що змушує RoboCopy видаляти будь-які файли, що не знаходяться у вихідному каталозі.

Основна команда для RoboCopy видалити всі файли в каталозі призначення:

robocopy "EmptyDir" "DestinationDir" /MIR /ETA

  • / MIR - дзеркальне відображення каталогу
  • / ETA - Приблизний час

RoboCopy працює з каталогами та наборами файлів у каталогах на відміну від окремих файлів. У прикладі пакетних файлів, що використовують RoboCopy, RMDIR як і раніше використовується для видалення тимчасового порожнього каталогу та батьківського каталогу призначення, а DEL використовується для видалення файлів.

Використання пакетних файлів

Пакетні файли, включаючи наведені нижче приклади, можуть використовуватися в командному рядку (з параметрами), з каталогу відправки до контекстного меню правою кнопкою миші або перетягуванням (найпростіший метод).

Командний рядок

Пакетні файли можуть бути виконані з командного рядка Windows з параметрами або додані до екологічного шляху для зручності.

Щоб виконати з командного рядка, відкрийте новий cmd-рядок, перейдіть до місця розташування пакетного файлу та введіть його повне ім’я або введіть повний шлях пакетного файлу. Обов’язково додайте каталоги та / або файли для видалення як параметри. Також додайте цитати навколо будь-яких шляхів до файлів з пробілами:

Вих. "C: Program Filesdelete_file_folder_fast_simple_v2.bat" "C: Папка або файл для видалення"

Відокремте кілька параметрів з пробілом між параметрами.

Додавання папки пакетного файлу до змінної середовища Windows дозволяє йому бути доступним з будь-якого запиту cmd, не переходячи до місця розташування пакетного файлу або вводячи його повний шлях. Щоб додати шлях пакетного файлу до середовища Windows, використовуйте:

пуск -> Панель управління -> Система -> Розширені налаштування системи -> Вкладка "Розширені" -> Змінні середовища -> Змінні системи -> Шлях -> Редагувати.

Додайте шлях, наприклад; C: шлях до пакетного файлу; до кінця (не забудьте одиничні крапки з комою на початку та в кінці). Натисніть ОК три рази.

Клацніть правою кнопкою миші контекстне меню

Ця опція дозволяє користувачеві клацнути папку правою кнопкою миші та вибрати спливаюче меню у спливаючому меню. Етапи, що дозволяють зробити це:

  1. Натисніть кнопку WINDOWS KEY + R, щоб відкрити діалогове вікно Run
  2. Введіть regedit і натисніть ENTER
  3. Перейдіть до HKEY_CLASSES_ROOTDirectoryshell
  4. Клацніть правою кнопкою миші на жовтій оболонці. Виберіть Новий> Ключ
  5. Введіть назву: Видалити та швидко, потім натисніть клавішу ENTER
  6. Клацніть правою кнопкою миші на створеній папці «Видалити та швидко» та виберіть «Нове»> «Ключ»
  7. Введіть команду та натисніть клавішу ENTER.
  8. Клацніть лівою кнопкою миші на створеній жовтій командній клавіші. Двічі клацніть запис (за замовчуванням).
  9. У поле Значення даних введіть пакетний файл, який потрібно використовувати, наприклад, cmd / c ”C: Шлях todelete_file_folder_fast_simple_v2.bat”% 1 ″ потім натисніть OK

Ще один спосіб досягти вищезазначеного - використовувати файл reg. Скопіюйте код нижче, вставте його в редактор файлів і збережіть його як «Видалити швидкий.reg». Двічі клацніть файл, щоб об'єднати його вміст у реєстр, і меню правою кнопкою миші готове до використання.

Версія редактора реєстру Windows 5.00 [HKEY_CLASSES_ROOTDirectoryshellDelete & Fastcommand] @ = "cmd / c" C: шлях todelete_file_folder_fast_simple_v2.bat "% 1"

Надіслати до каталогу

Інший варіант - надіслати в каталог, просто створіть ярлик і додайте його до відповідної директорії:

Для новіших версій Windows відправка в каталог знаходиться за адресою:

C:Users<yourusername>AppDataRoamingMicrosoftWindowsSendTo

Для XP розташування:

C:Documents and Settings<yourusername>SendTo

Для використання клацніть правою кнопкою миші файл або каталог та виберіть пакетний файл у меню Надіслати.

Перетягування

Найпростіший спосіб використання прикладних пакетних файлів - це просто перетягування папок або файлів на них. Жодні файли чи папки не буде видалено без підтвердження користувача.

Відмінності в прикладі пакетних файлів

delete_files_folders_fast_v2.bat - перелічує кілька файлів і папок, які потрібно видалити, батьківський каталог, обмежені атрибути папок / файлів та обмежену інформацію про імена та кількість файлів та папок, що видаляються. Також включає відкладений вихід, що дозволяє переглядати інформацію про видалення файлів і папок до закриття вікна (за замовчуванням 10 секунд).

delete_file_folder_fast_simple_v2.bat - обмежується видаленням одного файлу або однієї папки за раз. Не надає великої взаємодії та зворотного зв'язку, крім запитання користувача, чи дійсно вони хочуть видалити відображений файл чи папку. Автоматично закривається після видалення файлу чи папки.

delete_files_folders_fast_robocopy_v3.bat - по суті те саме, що delete_file_folder_fast_simple_v2.bat за винятком того, що вихід RoboCopy відображається під час виконання та після обробки файлів. Пакетний файл призупиняється після виконання, що дозволяє користувачеві переглядати результати без автоматичного виходу. Оновлено 01-29-20.

delete_files_folders_fast_robocopy_silent_v3.bat - по суті такий же, як і вище, за винятком того, що вихід RoboCopy НЕ відображається для швидшого виконання та обробки. Пакетний файл автоматично виходить із затримки на 10 секунд. Додано 01-29-20.

delete_file_folder_fast_simple_robocopy_v2.bat - обмежується видаленням одного файлу або однієї папки за раз. Використовуйте RoboCopy замість DEL для видалення вмісту папки. Вихід RoboCopy перенаправляється на нуль, щоб усунути вихід команди. Автоматично закривається після видалення файлу чи папки.

delete_file_folder_fast_byenow_v1.bat - використовує програму командного рядка byenow для видалення папки та всіх її файлів та підкаталогів. Використовує параметри за замовчуванням. Пакетний файл паузи після завершення.

delete_file_folder_fast_byenow_ntapi_v1.bat - використовує програму командного рядка byenow для видалення папки та всіх її файлів та підкаталогів. Те саме, що і попередній пакетний файл, але використовує опцію –delete-ntapi. Пакетний файл паузи після завершення.

Пакетні файли можуть бути перейменовані і працюватимуть однаково.

Приклад пакетних файлів за допомогою DEL, RMDIR та RoboCopy

Клацніть лівою кнопкою миші, щоб переглянути файл у поточному вікні, або використовуйте для завантаження правою кнопкою миші та «Зберегти посилання як». Пакетні файли змінюються від попередніх версій, оскільки перемикач / S значно уповільнює продуктивність при видаленні окремих файлів. Перемикач / S все ще використовується, але лише для папок.
Примітка: Перед використанням видаліть розширення ".txt".

Наведені нижче пакетні файли використовують лише команди RMDIR і DEL.

Примітка. У цьому положенні є файл, вбудований в систему. Будь ласка, відвідайте цей пост, щоб завантажити файл.

Примітка. У цьому положенні є файл, вбудований в систему. Будь ласка, відвідайте цей пост, щоб завантажити файл.

Наведені нижче пакетні файли використовують RoboCopy для видалення файлів папок, RMDIR для видалення порожніх папок і DEL для видалення окремих файлів. Якщо RoboCopy встановлений, але він не включений у шлях середовища Windows, не забудьте змінити шлях для RoboCopy для вашої системи у пакетному файлі (не забудьте видалити REM, щоб увімкнути його). Не потрібно змінювати пакетні файли, якщо RoboCopy вже встановлений і включений у шлях. Щоб перевірити, введіть у командному рядку “robocopy: Якщо RoboCopy виконує, він уже встановлений та включений у шлях оточення.

Примітка. У цьому положенні є файл, вбудований в систему. Будь ласка, відвідайте цей пост, щоб завантажити файл.

Примітка. У цьому положенні є файл, вбудований в систему. Будь ласка, відвідайте цей пост, щоб завантажити файл.

Примітка. У цьому положенні є файл, вбудований в систему. Будь ласка, відвідайте цей пост, щоб завантажити файл.

Безкоштовні засоби видалення

Доступно декілька інструментів для видалення файлів і файлів командного рядка та папок, але більшість фокусується на захищених видаленнях і не дає можливості для стандартних видалень. Наведені нижче безкоштовні утиліти можуть виконувати як стандартні, так і захищені видалення з графічного інтерфейсу та з командного рядка.

Ці інструменти на основі GUI працюють з командного рядка або через головний виконуваний файл, використовуючи окремі виконувані файли командного рядка. Перевага використання цих інструментів, а не використання рідних windows Такими командами, як RMDIR і DEL, є простіше налаштувати складні параметри видалення, такі як видалення файлів або папок на основі дати модифікації або створення, розміру чи типу, а також для запису журналів, відправлення процесу на другий план, встановлення автоматичних відключень системи, виключити / включити конкретні файли та папки, зупинитись на помилках та встановити багато інших параметрів за допомогою одного командного рядка.

FastCopy

FastCopy це утиліта копіювання / резервного копіювання, яка також може виконувати стандартні та обмежені захищені видалення окремих файлів і папок. Його можна встановити як звичайну програму або як портативний додаток, вибравши витяг під час встановлення. Виконавець програми також приймає команди з командного рядка.

Файли та папки можна скидати та перетягувати на інтерфейс, щоб встановити джерела чи каталоги призначення. У меню «Параметри» програма може бути налаштована на встановлення розширень оболонок, щоб FastCopy дозволяв видаляти, копіювати або переміщувати файли / папки за допомогою меню правої кнопки миші в Провіднику Windows.

Основний інтерфейс FastCopy

Інтерфейс FastCopy

Параметри видалення FastCopy

Параметри видалення FastCopy

Параметри розширення оболонки FastCopy

Параметри розширення оболонки FastCopy

Командний рядок FastCopy та пакетний файл

Перелік параметрів командного рядка FastCopy можна знайти онлайн-довідкова сторінка і у файлі довідки програми. Наведений нижче пакетний файл налаштований для видалення файлів і папок за допомогою перетягування з двома параметрами: (1) НЕ вимагайте підтвердження перед видаленням та відключенням журналу, і (2) Попросіть підтвердження перед видаленням і включенням журналу. Пакетний файл призупиняється після виконання. Пакетний файл налаштований для використання портативної установки.

Розбиття першого командного рядка FastCopy (без підтвердження, без реєстрації):

FastCopy.exe / cmd = видалити / no_confirm_del / log = FALSE / auto_close% *

  • / cmd = delete - видалити команду
  • / no_confirm_del - Не підтверджуйте перед видаленням
  • / log = FALSE - вимкнути інформацію про операцію запису / помилки в файл журналу
  • / auto_close - закривається автоматично після завершення виконання без помилок
  • % * - Усі перетягнуті файли та папки

Приклад пакетного файлу для FastCopy (перед використанням видаліть розширення .txt):

Примітка. У цьому положенні є файл, вбудований в систему. Будь ласка, відвідайте цей пост, щоб завантажити файл.

Швидка папка гумка Pro

Швидка папка гумка Pro це встановлена ​​безкоштовна програма. Він може виконувати як стандартні, так і захищені видалення як з командного рядка, так і з інтерфейсу GUI. Автономні виконувані файли командного рядка розміщені у папці командного рядка, яка містить два виконувані файли CLI, 32-бітну версію та 64-бітну версію.

Це утиліта, спеціально розроблена для видалення каталогів та підпапок та файлів у них. На відміну від FastCopy, він не може видалити окремі файли за назвою файлів, але він може видалити окремі або групи файлів на основі розмірів, дат та інших фільтрів, і він може виключати файли за допомогою магістральних символів. Хоча папки та файли можна безпосередньо перетягнути та видалити на інтерфейс GUI для видалення, протестування виявило, що коли файл було скинуто на GUI, програма також видалила всі інші файли та папки в тій самій папці, що і файл, що випав. Не було проблем із папками, скинутими на графічний інтерфейс або видаленими за допомогою виконуваного файлу CLI. Виконавчий файл CLI не в змозі видалити окремі файли і генерує помилку, якщо для команди видалення використовується окремий шлях до файлу.

Порівняно з FastCopy, кількість параметрів командного рядка обмежена. Наприклад, не існує жодної опції, щоб увімкнути або вимкнути підтвердження перед видаленням файлу, тому параметр підтвердження повинен бути запрограмований у пакетному скрипті за допомогою команд Windows для отримання цієї функціональності.

Інтерфейс швидкої папки Eraser Pro

Інтерфейс швидкої папки Eraser Pro

Параметри видалення швидкої папки Eraser Pro

Параметри видалення швидкої папки Eraser Pro

Командний рядок та папковий файл Fast Folder Eraser Pro та пакетний файл

Файл довідки для автономних виконуваних файлів CLI розташований у папці командного рядка разом із двома виконуваними файлами, 32-бітним виконуваним файлом CLI, FFECmd32.exe та 64-бітним виконуваним файлом FFECmd64.exe. Пакетний файл нижче налаштований для перетягування за допомогою 32-розрядного виконуваного файлу, включає підтвердження перед видаленням і паузи після виконання .. На відміну від FastCopy, де декілька файлів і папок можна обробити за допомогою однієї команди, виконуваний CLI у Fast Folder Eraser Pro може одночасно обробляти лише окрему папку. Якщо декілька папок перетягуються та потрапляють у пакетний файл, папки після першої ігноруються. Якщо файл або кілька файлів потрапляють на пакетний файл, файли не обробляються.

Розбивка командного рядка byenow, як використовується у пакетному файлі:

FFECmd32.exe / path% * / r / logfail

  • / path% * - абсолютний шлях каталогу для ініціювання видалення
  • / r - повторювані дочірні каталоги
  • / logfail - журнал невдалого видалення файлу у файл журналу

Приклад пакетного файлу для Fast Folder Eraser Pro (перед використанням видаліть розширення .txt):

Примітка. У цьому положенні є файл, вбудований в систему. Будь ласка, відвідайте цей пост, щоб завантажити файл.

відвідати утиліту командного рядка

побачити це спеціалізований інструмент командного рядка, спеціально розроблений для видалення файлів і каталогів в одній папці. Він використовує кілька стратегій, не знайдених для інших інструментів видалення для впорядкування та оптимізації процесу видалення, таких як: (1) надання суттєвої, але не багатослівної обробки інформації, (2) можливість придушення підтвердження, (3) з використанням усіх наявних процесорних ядер за замовчуванням та (4) можливість використовувати NtDeleteFile API замість стандартного процесу видалення (DeleteFile API) для видалення файлів. API NtDeleteFile швидше, оскільки йому потрібен лише один системна дзвінка замість трьох системних викликів, необхідних стандартному API DeleteFile. byenow також відображає час, необхідний для процесу видалення після завершення. Нижче наведено короткий перелік параметрів налаштування користувача byenow:

  • попередній перегляд файлів з номерами та папками, які потрібно видалити
  • встановити кількість потоків (за замовчуванням використовує ту саму кількість потоків, що і ядра CPU)
  • придушити підтвердження
  • список помилок
  • відображення прогресу в одному рядку
  • поетапне видалення - скануйте папку 1-го, а потім видаліть
  • використовувати API NtDeleteFile замість API за замовчуванням DeleteFile

заздалегідь знайдіть варіанти

Ознайомитися з опціями

побачити режим попереднього перегляду

byenow Попередній перегляд

відвідайте командний рядок та пакетний файл

Оскільки byenow вже оптимізований для видалення файлів за допомогою його налаштувань за замовчуванням, а його параметри можна встановити з командного рядка, для запуску програми у вікні команд потрібен лише базовий пакетний файл. Надано два пакетні файли, один із налаштуваннями за замовчуванням, а другий за допомогою API NtDeleteFile. Оскільки byenow - це лише програма командного рядка, не забудьте встановити шлях для byenow у пакетних файлах.

Розбивка командного рядка byenow (з опцією API NtDeleteFile):

перегляньте “% ~ 1” –delete-ntapi

  • –Delete-ntapi - використовуйте API NtDeleteFile замість DeleteFile API

Приклад пакетних файлів для byenow (перед використанням видаліть розширення .txt):

Примітка. У цьому положенні є файл, вбудований в систему. Будь ласка, відвідайте цей пост, щоб завантажити файл.

Примітка. У цьому положенні є файл, вбудований в систему. Будь ласка, відвідайте цей пост, щоб завантажити файл.

Базові орієнтири файлових файлів

Пакетні файли порівнювали шляхом порівняльної оцінки, використовуючи стандартний процес видалення Windows як базовий рівень. Було створено дев'ять однакових тестових каталогів, кожен з яких складався з 12255 файлів у 1599 каталогах і загальною сумою 1658 МБ. Кожен пакетний файл був приурочений за допомогою таймера та / або з використанням зареєстрованого часу, коли необхідно, щоб виміряти, скільки часу знадобилося для видалення тестового каталогу.

Пакетний файл Результати (хв: сек)
delete_files_folders_fast_byenow_v1.bat TBD
delete_files_folders_fast_byenow_ntapi_v1.bat TBD
delete_file_folder_fast_simple_robocopy_v2.bat 0: 26
delete_files_folders_fast_robocopy_silent_v3.bat 0: 31
delete_file_folder_fast_simple_v2.bat 0: 32
delete_files_folders_fast_v2.bat 0: 34
Fastcopy_delete_file_folders_v1.bat (підтвердити) 0: 37
Fastcopy_delete_file_folders_v1.bat (немає підтвердження) 0: 40
FastFolderEraserPro_delete_file_folders.bat 0: 44
delete_files_folders_fast_robocopy_v3.bat 0: 49
Стандартне видалення Windows для кошика * 1: 57

* Час включає 0:40 сек для відправлення тестового каталогу в кошик і 1 хв та 17 секунд для спорожнення кошика (0:40 + 1:17 = 1:57).

Висновки

Більшість тестованих інструментів командного рядка були швидшими, ніж використання стандартного видалення Windows, особливо коли було включено час, необхідний для спорожнення кошика. Найшвидші інструменти командного рядка були майже вдвічі швидшими, ніж стандартний процес видалення Windows, який надсилає файли в кошик, і в 4 рази швидше, ніж Windows, коли враховувався час, необхідний для спорожнення кошика. Придушення виводу та відключення реєстрації допомогло. для поліпшення продуктивності інструментів командного рядка, але найбільш важливим фактором виявляється те, що всі інструменти командного рядка безпосередньо видаляють файли та не використовують кошик. Тести дозволяють припустити, що будь-яка програма, яка безпосередньо видаляє файли, автоматично здасться швидшою порівняно з повним стандартним процесом видалення Windows, навіть коли вони насправді повільніші за час, який Windows потребує лише для надсилання видалених файлів у кошик.

Тестові каталоги, які використовуються, насправді не є реальними ситуаціями в реальному світі, оскільки вони насправді були невеликими, і більшість користувачів навряд чи використовують спеціалізовані інструменти для видалення, щоб періодично видаляти каталоги менше 3-4 Гб. Хоча корисний як "приблизна оцінка", більш реалістичним тестовим сценарієм було б тестування різних команд пакетного файлу, використовуючи більшу і більш складну структуру каталогів, можливо, 50 Гб і більше.

Поширювати любов

Залишити коментар