Видалення файлів або папок рекурсивно з Windows CMD


135

Як видалити файли чи папки рекурсивно в Windows із командного рядка?

Я знайшов це рішення там, де шлях ми рухаємо в командному рядку і запускаємо цю команду.

Я наводив приклад із папкою розширення файлу .svn:

for /r %R in (.svn) do if exist %R (rd /s /q "%R")

Що ви маєте на увазі під "куди ми їдемо" ?
Пітер Мортенсен

Відповіді:


129

Виконайте наступні дії:

  1. Відкрийте командний рядок
  2. Змініть каталог на потрібний шлях
  3. Дайте таку команду

    del /S *.svn
    

4
Не працює для мене, він видаляє лише файли в поточному каталозі.
дельфірули

119

Інші відповіді не спрацювали для мене, але це:

del /s /q *.svn
rmdir /s /q *.svn

/ q відключає Так / Ні запит

/ s означає видалити файл (и) з усіх підкаталогів.


Я думаю, що мої потреби такі ж, як і ти, що ти намагаєшся - я намагаюся видалити всі .svn папки в каталозі проектів та всіх підкаталогах. У Windows 2012 ця відповідь не працює для мене. Він видаляє папку .svn у поточному каталозі, але не з жодного з дочірніх каталогів.
Джим

42

Ви можете використовувати це в batсценарії:

rd /s /q "c:\folder a"

Тепер просто змініть c:\folder aмісце розташування вашої папки. Цитата потрібна лише тоді, коли назва вашої папки містить пробіли.


Ця команда не працює і помилка кидання, як нижче D: \> rd / s / q "D: \ Root a" Система не може знайти вказаний файл.
abhayk

5
Якщо у вашому каталозі справді немає space aімені, тоді залиште цю частину.
Jesse Chisholm

22
RMDIR path_to_folder /S

колишній RMDIR "C:\tmp" /S

Зауважте, що вам буде запропоновано видалити папку "C: \ tmp". Поєднавши його з перемикачем / Q, тихо видалить папку (наприклад, RMDIR "C:\tmp" /S /Q)


8

Для видалення файлу я написав наступний простий пакетний файл, який видаляв усі .pdf рекурсивно:

del /s /q "\\ad1pfrtg001\AppDev\ResultLogs\*.pdf"
del /s /q "\\ad1pfrtg001\Project\AppData\*.pdf"

Навіть для локального каталогу ми можемо використовувати його як:

del /s /q "C:\Project\*.pdf"

Те ж саме можна застосувати для видалення каталогу, де нам просто потрібно змінити del на rmdir .


4

Якщо ви хочете видалити певне розширення рекурсивно, скористайтеся цим:

For /R "C:\Users\Desktop\saleh" %G IN (*.ppt) do del "%G"

3

Ви також можете зробити:

del /s /p *.{your extension here}

Повідомлення /pзапропонує вам кожен знайдений файл, якщо ви нервуєте про видалення чогось, чого не слід.


2

Використовуйте Windows , Rmdir команду

Тобто, rmdir / S / Q C: \ Temp

Я також використовую наведені нижче вже кілька років бездоганно.

Ознайомтеся з іншими параметрами за допомогою: forfiles /?

Рекурсивно видаляйте SQM / Telemetry у папці Windows

forfiles /p %SYSTEMROOT%\system32\LogFiles /s /m *.* /d -1 /c "cmd /c del @file"

Видаляйте файли Windows TMP рекурсивно

forfiles /p %SYSTEMROOT%\Temp /s /m *.* /d -1 /c "cmd /c del @file"

Видаляйте користувацькі файли та папки TEMP рекурсивно

forfiles /p %TMP% /s /m *.* /d -1 /c "cmd /c del @file"

2

Після публікації в блозі Як я можу за допомогою Windows PowerShell видалити всі файли .TMP на диску? Ви можете використовувати щось подібне, щоб видалити всі .tmp, наприклад, із папки та всіх папок у PowerShell:

get-childitem [your path/ or leave empty for current path] -include
*.tmp -recurse | foreach ($_) {remove-item $_.fullname}

2

Для повного витирання папки з нативними командами та отримання журналу про те, що зроблено.

ось незвичайний спосіб зробити це:

припустимо, ми хочемо очистити d: \ temp dir

mkdir d:\empty
robocopy /mir d:\empty d:\temp
rmdir d:\empty

Це дуже розумне рішення, яке вирішило моє питання. Я використовував роботокопію, щоб скопіювати каталог AppData, не замислюючись про самовідвідний Junction. Це єдиний спосіб я міг рекурсивно видаляти всі приховані файли. Ніколи не забувайте / xj!
Кріс Ларабел

0

Для прихованих файлів мені довелося використовувати наступне:

DEL /S /Q /A:H Thumbs.db

Застаріла. Windows XP не підтримує microsoft co.
Mesalcode

Мені довелося скористатися цим, щоб видалити .dcm файли, які залишилися від відновлення резервного копіювання (windows 10)
Джеральд Мерфі

0
dir /b %temp% >temp.list
for /f "delims=" %%a in (temp.list) do call rundll32.exe advpack.dll,DelNodeRunDLL32 "%temp%\%%a"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.