- Expert Users
- rd – удаляем всю папку целиком
- del – удаляем все файлы рекурсивно
- del – удаляем все файлы из корневой папки
- Рекурсивное удаление каталога
- Рекурсивное удаление файлов или папок в Windows CMD
- Используйте Windows , Rmdir команду
- Как рекурсивно удалить каталог из командной строки в Windows?
- Как рекурсивно удалить каталог из командной строки в Windows?
- 7 ответов
Expert Users
Если вам когда-либо приходилось удалять файлы и папки в Windows, то вы наверное знаете сколько это может занять времени. Куча вопросов, подтверждений, перемещений в корзину и т.д. Но к вашему счастью, программисты Windows предусмотрели такую полезную вещь, как командная строка, с помощью которой можно удалить всю папку и ее содержимое целиком, набрав всего одну команду. Ниже рассмотрим несколько способов удаления папки и ее содержимого.
rd – удаляем всю папку целиком
Для того, чтобы удалить папку и все ее содержимое, воспользуемся командой rd (или rmdir):
Здесь параметр s означает – удалять рекурсивно, q – удалять без подтверждения, путь_к_папке – название папки, если она находится в текущей директории, либо полный путь к папке включая диск, например: “C:\папка1”.
del – удаляем все файлы рекурсивно
С помощью команды del можно удалить все файлы из папки и подпапок (рекурсивно), но не удалять саму папку и подпапки:
Параметр f означает принудительное удаление файлов, включая файлы только для чтения.
del – удаляем все файлы из корневой папки
С помощью команды del можно удалить все файлы, находящиеся в папке, но не удалять файлы из вложенных подпапок:
В заключение, предлагаю вам посмотреть как работают все вышеперечисленные команды в данном видео:
Рекурсивное удаление каталога
Для того, чтобы удалить пустой каталог, достаточно выполнить простую функцию Rmdir в параметре которой нужно указать путь к каталогу. Но как удалить каталог, который имеет подкаталоги и множество файлов?
Для начала нужно проверить существование подкаталогов в данном каталоге, и если они существуют, нужно снова проверить подкаталоги на наличие в них еще подкаталогов. Это действие может повторяться большое количество раз, поэтому здесь нужно использовать рекурсию, вызов функции внутри себя самой.
Для этого достаточно воспользоваться следующей функцией:
Ну и конечно вызвать данную функцию, например так:
Разберем работу данной функции. Сначала мы получаем список всех файлов внутри заданной в аргументе функции директории. Если в каталоге нет ничего, то сразу удаляем его. Если же существуют файлы или папки, то начинаем их всех перебирать. Если элемент — файл, то просто удаляем его. Если это каталог, то вызываем снова нашу функцию, передав в качестве параметра этот же каталог. В этом и заключается принцип рекурсии, функция вызывает сама себя. После ее вызова функция все начинается заново, но уже с другой директорией. В этой другой папке все начинается снова, поиск каталогов и файлов. Если это файл, удаляем, если каталог, снова сработает функция. В конце, когда все файлы и директории удалены, у нас удаляется уже пустой каталог. Ну и перед каждым удалением мы выставляем права доступа к файлу или папке 777. Более подробно о правах доступа: Права доступа к файлам и папкам.
Рекурсивное удаление файлов или папок в Windows CMD
Как мне рекурсивно удалять файлы или папки в Windows из командной строки?
Я нашел это решение, где мы указываем путь в командной строке и запускаем эту команду.
Я привел пример с папкой с расширением файла .svn:
Пожалуйста, выполните следующие шаги:
- Откройте командную строку
- Измените каталог на нужный путь
Дайте следующую команду
Другие ответы не сработали для меня, но это сработало:
/ q отключает запрос Да / Нет
/ s означает удаление файла (ов) из всех подкаталогов.
Вы можете использовать это в bat скрипте:
Теперь просто c:\folder a перейдите в местоположение вашей папки. Цитата требуется только в том случае, если имя вашей папки содержит пробелы.
ех. RMDIR «C:\tmp» /S
Обратите внимание, что вам будет предложено действительно удалить папку «C: \ tmp». Комбинируя его с переключателем / Q, вы автоматически удаляете папку (например RMDIR «C:\tmp» /S /Q ).
Для удаления файла я написал следующий простой командный файл, который рекурсивно удалял все .pdf:
Даже для локального каталога мы можем использовать его как:
То же самое можно применить к удалению каталога, где нам просто нужно изменить del с помощью rmdir .
Если вы хотите рекурсивно удалить определенное расширение, используйте это:
Вы также можете сделать:
/p Предложим для каждого найденного файла, если вы нервничаете об удалении то , что вы не должны.
Используйте Windows , Rmdir команду
То есть rmdir / S / Q C: \ Temp
Я также использую приведенные ниже в течение нескольких лет, безупречно.
Проверьте другие варианты с помощью: forfiles /?
Удалить SQM / Телеметрию в папке Windows рекурсивно
Удалить файлы Windows TMP рекурсивно
Рекурсивное удаление пользовательских файлов и папок TEMP
После сообщения в блоге Как я могу использовать Windows PowerShell для удаления всех файлов .TMP на диске? , вы можете использовать что-то вроде этого, чтобы удалить все .tmp, например, из папки и всех подпапок в PowerShell:
Для полной очистки папки с собственными командами и получения журнала о том, что было сделано.
вот необычный способ сделать это:
предположим, мы хотим очистить каталог d: \ temp
Для скрытых файлов мне пришлось использовать следующее:
Как рекурсивно удалить каталог из командной строки в Windows?
Что такое эквивалент Windows rm -r [directory-name] ?
deltree если я помню DOS .
Кажется, это было обновлено . это то, что вы хотите:
Это удаляет каталог C:\test с подсказками:
Это делает то же самое, без подсказок:
Что касается части sudo вашего вопроса, если вам нужно больше привилегий, вы можете сначала открыть новую оболочку как другую учетную запись пользователя с помощью runas команды, например так:
Если вы хотите удалить из командной строки длинную и сложную структуру папок, которую RmDir не будет касаться, и даже обозреватель не сможет отобразить, я обнаружил, что robocopy может быть очень эффективным при удалении структуры. В приведенном ниже примере мы имеем массивную структуру внутри администратора папок, структура настолько глубока, что ничто не может ее удалить. Мы создаем новую пустую папку под названием (как ни странно!) «Новая папка». Затем мы используем команду robocopy, сообщая, что исходная папка — «новая папка», а целевая папка — «D: \ Administrator» с параметром / MIR, что означает, что она удалит все, что не находится в исходной папке.
В этом случае пути к папкам были такими длинными, что они даже не помещались бы в окно командной строки. Буфер экрана, но Robocopy будет обходить структуру и удалять любые «лишние» файлы и папки (т.е. все, что находится не в новой пустой папке, а это все ).
Если вы работаете в Windows Vista +, вы можете сделать следующее в PowerShell:
Для меня то, что работает
Вы можете добавить, /q чтобы отключить подтверждение. Мне никогда не удавалось заставить rmdir работать (на XP)
Если у вас действительно очень длинный путь (как я сделал из-за ошибки в Java-программе), даже robocopy не сможет это сделать. Он спустился примерно на 30 секунд на мой путь, а затем завис.
Мое решение: если вы можете переместить весь путь к проблеме из одной папки в другую, вы можете рекурсивно и многократно вырезать несколько ступеней каталога сверху.
Этот пакет играет в пинг-понг между двумя каталогами leer и leer2 и каждый раз отсекает 8 «библиотек». Если ваш путь содержит файлы, вы должны добавить дополнительные команды, чтобы стереть их.
Как рекурсивно удалить каталог из командной строки в Windows?
Что такое эквивалент Windows rm -r [имя-каталога] ?
7 ответов
deltree , если я помню свою DOS .
Кажется, он обновлен . это то, что вы хотите:
Это удаляет каталог C: \ test с подсказками:
Это делает то же самое без подсказок:
Что касается части sudo вашего вопроса, если вам нужно больше priviliges, вы можете сначала открыть новую оболочку в качестве другой учетной записи пользователя, используя команду runas , например:
Если вы хотите удалить длинную и сложную структуру папок из командной строки, которую RmDir не коснется, и даже не может показать проводник, я обнаружил, что robocopy может быть очень эффективным при удалении структуры. В приведенном ниже примере у нас массивная структура внутри администратора папки, структура настолько глубока, что ничто не может ее удалить. Мы создаем новую пустую папку (как ни странно!) «Новая папка». Затем мы используем команду robocopy, сообщая, что исходная папка — это «новая папка», а целевая папка — «D: \ Administrator» с параметром /MIR, что означает, что она очистит все, что не находится в исходной папке.
В этом случае пути к папкам были такими длинными, что они даже не поместились в окне командной строки «Экранный буфер», но Robocopy пересечет структуру и удалит все «лишние» файлы и папки (то есть ничего не в новой пустой папке, который есть все).
Вы можете сделать следующее в PowerShell, если вы находитесь в Windows Vista +: