Рекурсивное удаление файлов или папок в 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
У меня не работает, удаляет только файлы в текущем каталоге.
delphirules

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". Система не может найти указанный файл.
Абхайк

5
Если имя вашего каталога действительно не содержит space a, оставьте эту часть.
Джесси

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 / Телеметрию в папке 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

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

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

0

Для скрытых файлов мне пришлось использовать следующее:

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

Устаревшие. Microsoft не поддерживает Windows XP.
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.