Как рекурсивно удалить каталог из командной строки в Windows?


Ответы:


342

deltreeесли я помню DOS .


Кажется, это было обновлено ... это то, что вы хотите:

RMDIR /S

Это удаляет каталог C:\testс подсказками:

rmdir c:\test /s

Это делает то же самое, без подсказок:

rmdir c:\test /s /q

Что касается части sudo вашего вопроса, если вам нужно больше привилегий, вы можете сначала открыть новую оболочку как другую учетную запись пользователя с помощью runasкоманды, например так:

runas /user:Administrator cmd
rmdir c:\test /s /q

1
@FarmBoy, извините, мне кажется, мои воспоминания уходят слишком далеко назад. Я обновил ответ для Windows XP и новее.
Колин Пикард

8
да deltree, это старая команда DOS. Он был удален в XP и заменен наrmdir /s
Heavyyd

3
Что означает флаг / s?
Майк Р

По какой-то причине возникает проблема, если вы делаете это в Powershell. Так что просто используйте командную строку Windows.
Девид

3
@MikeR, это может означать «подкаталоги» или что-то в этом роде. findstrимеет тот же параметр, который имеет больше смысла в этом случае, так что, возможно, они одинаковы для согласованности.
Сэм

57

Если вы хотите удалить из командной строки длинную и сложную структуру папок, которую RmDir не будет касаться, и даже обозреватель не сможет отобразить, я обнаружил, что robocopy может быть очень эффективным при удалении структуры. В приведенном ниже примере мы имеем массивную структуру внутри администратора папок, структура настолько глубока, что ничто не может ее удалить. Мы создаем новую пустую папку под названием (как ни странно!) «Новая папка». Затем мы используем команду robocopy, сообщая, что исходная папка - «новая папка», а целевая папка - «D: \ Administrator» с параметром / MIR, что означает, что она удалит все, что не находится в исходной папке.

robocopy "D:\new folder" D:\Administrator /MIR

В этом случае пути к папкам были такими длинными, что они даже не помещались бы в окно командной строки. Буфер экрана, но Robocopy будет обходить структуру и удалять любые «лишние» файлы и папки (т.е. все, что находится не в новой пустой папке, а это все ).


11
Это единственное решение, которое будет работать, когда ваш путь длиннее 250 с лишним символов
Calm Storm

10

Если вы работаете в Windows Vista +, вы можете сделать следующее в PowerShell:

rm C:\path\to\delete -r -f[orce]

6
Windows 10 говорит -fнеоднозначно. Но вы можете бежатьrm -r -force <path>
BrunoLM

6

Для меня то, что работает

del /s dir

Вы можете добавить, /qчтобы отключить подтверждение. Мне никогда не удавалось заставить rmdirработать (на XP)


6
Вам, вероятно, следует прекратить использовать XP, она больше не поддерживается ...
Эрик Уилсон,

3
Для меня это рекурсивное удаление всех файлов, но не удаление самих каталогов - dirтоже не удаляется.
sergiol

2

Если у вас действительно очень длинный путь (как я сделал из-за ошибки в Java-программе), даже robocopy не сможет это сделать. Он спустился примерно на 30 секунд на мой путь, а затем завис.

Мое решение: если вы можете переместить весь путь к проблеме из одной папки в другую, вы можете рекурсивно и многократно вырезать несколько ступеней каталога сверху.

Этот пакет играет в пинг-понг между двумя каталогами leer и leer2 и каждый раз отсекает 8 «библиотек». Если ваш путь содержит файлы, вы должны добавить дополнительные команды, чтобы стереть их.

recurdel.cmd
:loop
move c:\leer\libraries\libraries\libraries\libraries\libraries\libraries\libraries\libraries c:\leer2
rd /S /Q c:\leer\libraries
move c:\leer2\libraries\libraries\libraries\libraries\libraries\libraries\libraries\libraries c:\leer
rd /S /Q c:\leer2\libraries
GOTO loop

2

Из CMD Просто запустите RD / s C: \ path \ to \ delete Hit Y в командной строке

/ s обеспечивает удаление всех подкаталогов.

Справка Запустите справку RD из командной строки


2
Спасибо за ваш ответ, но эта информация уже была в принятом ответе. ( rdи rmdirто же самое.) Возможно, это подойдет как комментарий там.
Бен Н

0

Это удалит «мою папку» без запроса:

rd /s /q "C:\Users\gourav.g\AppData\Roaming\my folder"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.