Все способы:
- Полезные советы перед удалением папок через консоль
- Способ 1: Использование команды RMDIR (RD) для директорий
- Способ 2: Использование PowerShell и команды Remove-Item
- Способ 3: Удаление через PowerShell с использованием конвейеров
- Популярные условия для фильтрации папок в PowerShell
- Способ 4: Использование команды DELTREE в режиме совместимости
- Вопросы и ответы: 0
Полезные советы перед удалением папок через консоль
Работа с папками через консоль Windows требует некоторой подготовки и понимания основных принципов. Перед тем как начать удаление директорий, нужно правильно определить путь к нужным папкам и научиться ориентироваться в консольном интерфейсе. Многие пользователи обходят стороной «Командную строку», считая ее слишком сложной. Однако несколько базовых приемов значительно упростят взаимодействие с ней. Точное указание пути является фундаментальным элементом для выполнения любых операций с папками в «Командной строке». Неверно указанный путь приведет к ошибкам или, что гораздо хуже, к удалению не тех директорий, которые планировалось удалить. Следующие практические рекомендации помогут избежать распространенных ошибок и сделают процесс удаления папок более эффективным.
- Использование команды CD для навигации. Команда CD (Change Directory) дает возможность перемещаться между папками в файловой системе. Это устраняет необходимость постоянно вводить полный путь при каждой операции с папками. К примеру, введя команду
CD C:\Users\Username\Documents
, вы перейдете в директорию Documents. После этого вы сможете выполнять операции с папками внутри нее, указывая только их имена без полного пути. Такой подход существенно сокращает объем ввода и минимизирует вероятность ошибок при написании пути. - Просмотр содержимого директории с помощью DIR. Перед тем как удалять папки, настоятельно рекомендуется проверить содержимое текущей директории с помощью команды DIR. Эта команда покажет полный список всех файлов и папок в текущем расположении. Такая предварительная проверка поможет убедиться, что вы находитесь в нужной директории, и точно определить названия папок, которые планируется удалить. Команда DIR также может использоваться с масками для фильтрации результатов, например
DIR /AD
покажет только папки в текущей директории. - Использование автодополнения с помощью клавиши Tab. Для ускорения ввода длинных путей к папкам и предотвращения опечаток, активно используйте клавишу Tab. Эта функция автоматически дополняет названия папок и файлов при вводе. Начните вводить путь или имя папки и нажмите Tab – система предложит возможные варианты завершения. Если нажать Tab повторно, можно переключаться между доступными вариантами. Эта функция особенно полезна при работе с папками, имеющими длинные или сложные названия с большим количеством символов.
- Открытие «Командной строки» в определенной директории. Чтобы сразу открыть консоль в необходимой папке и избежать долгой навигации, воспользуйтесь проводником Windows. Перейдите к нужной директории в проводнике, после чего нажмите и удерживайте клавишу Shift, одновременно кликнув правой кнопкой мыши. В появившемся контекстном меню выберите пункт «Открыть окно командной строки здесь» или «Открыть окно PowerShell здесь». Этот прием позволяет мгновенно начать работу в требуемой директории без необходимости ручной навигации.
- Копирование пути из проводника Windows. Если вы сомневаетесь в точности пути к папке, скопируйте его напрямую из проводника Windows. Для этого перейдите к нужной директории в проводнике, щелкните в адресной строке для выделения пути и скопируйте его (Ctrl+C). Затем вставьте полученный путь в консоль (правый клик мыши или Ctrl+V в PowerShell). При вставке в классическую «Командную строку» может потребоваться заключить путь в кавычки, особенно если в нем содержатся пробелы или специальные символы.
Способ 1: Использование команды RMDIR (RD) для директорий
Удаление папок через консоль Windows является необходимым навыком для управления файловой системой без использования графического интерфейса. Существует специальная команда RMDIR (или сокращенно RD), разработанная именно для удаления директорий. Эта команда присутствует во всех версиях Windows и не требует установки дополнительного программного обеспечения. Изначально RMDIR создавалась для удаления только пустых директорий, однако при использовании определенных параметров она превращается в мощный инструмент для удаления целых структур папок со всем их содержимым. Это делает ее незаменимой при необходимости массовой очистки разделов жесткого диска или быстрой реорганизации файловой системы.
Для удаления папки с помощью RMDIR необходимо открыть «Командную строку» и ввести команду в следующем формате:
RMDIR путь_к_директории
или используя сокращенный вариант:
RD путь_к_директории
Команда RMDIR имеет два ключевых аргумента для работы с папками:
- /S. Этот параметр указывает на необходимость удаления не только самой директории, но и всех файлов и поддиректорий внутри нее. По сути, он превращает команду в инструмент для рекурсивного удаления целых ветвей файловой структуры. Если не использовать данный параметр, команда RMDIR сможет удалить только пустые директории и выдаст ошибку при попытке удалить папку, в которой есть файлы или другие папки. Поэтому при необходимости полного удаления непустой директории параметр /S является обязательным.
- /Q. Данный параметр отключает запрос подтверждения при удалении директории со всем ее содержимым. Обычно система запрашивает подтверждение в формате «Вы уверены (Y/N)?» перед удалением папки с файлами. Параметр /Q (от слова Quiet – тихий) позволяет пропустить этот запрос и выполнить удаление немедленно. Этот аргумент особенно полезен при автоматизации процессов или при необходимости удаления большого количества директорий. Однако его следует использовать с большой осторожностью, так как он устраняет последнюю защиту от случайного удаления важных данных.
Способ 2: Использование PowerShell и команды Remove-Item
Консоль PowerShell представляет собой более современный и функциональный терминал, доступный во всех актуальных версиях Windows. PowerShell предлагает расширенные возможности по сравнению с традиционной «Командной строкой» и включает в себя универсальную команду Remove-Item для управления как файлами, так и директориями. Данная команда отличается более гибким набором параметров и возможностью интеграции с другими командами PowerShell через систему конвейеров. Remove-Item обеспечивает более тонкий контроль над процессом удаления папок и предоставляет дополнительные опции для работы с защищенными или системными директориями.
Remove-Item путь_к_директории
PowerShell также поддерживает сокращенный алиас для Remove-Item: rm путь_к_директории
.
Команда Remove-Item имеет расширенный набор параметров для работы с директориями:
- -Recurse. Этот параметр позволяет рекурсивно удалять все содержимое директории, включая все вложенные файлы и поддиректории любой глубины вложенности. Функционально этот параметр аналогичен аргументу RMDIR /S, но интегрирован в экосистему PowerShell. Использование параметра -Recurse является обязательным, если необходимо удалить непустую директорию. Без него команда Remove-Item сможет удалить только пустые папки, аналогично базовой команде RMDIR.
- -Force. Обеспечивает принудительное удаление защищенных, скрытых и системных директорий, а также папок с особыми атрибутами. Данный параметр объединяет функциональность различных аргументов традиционной «Командной строки» и предоставляет более универсальный подход к преодолению ограничений доступа к директориям. Параметр -Force особенно полезен при необходимости удаления папок, созданных системой или другими программами с ограниченными правами доступа.
- -Confirm. Добавляет запрос подтверждения перед удалением каждого объекта, что обеспечивает дополнительный уровень контроля при массовом удалении. Использование данного параметра создает дополнительную защиту от случайного удаления важных папок и рекомендуется при выполнении операций с критически важными директориями или при работе в системных папках. Каждый раз перед удалением система будет запрашивать подтверждение, что позволяет более внимательно контролировать процесс.
- -WhatIf. Уникальный параметр PowerShell, который демонстрирует, какие действия будут выполнены при запуске команды, но не производит фактического удаления директорий. Данный режим позволяет безопасно моделировать результаты команды перед ее реальным выполнением, что особенно ценно при работе со сложными путями или при массовом рекурсивном удалении структур папок. Использование параметра -WhatIf помогает избежать непреднамеренного удаления важных директорий.
Способ 3: Удаление через PowerShell с использованием конвейеров
PowerShell предлагает продвинутый метод удаления директорий с использованием конвейеров (pipelines), который позволяет комбинировать несколько команд для более сложных операций с папками. Этот подход особенно полезен, когда необходимо выполнить выборочное удаление папок на основе определенных критериев, например, даты создания, размера или имени. Конвейеры в PowerShell предоставляют непревзойденную гибкость и возможность автоматизации процессов удаления директорий, которые невозможно достичь с помощью стандартной «Командной строки». Этот метод требует базового понимания принципов работы PowerShell, но предлагает значительные преимущества для опытных пользователей.
Get-ChildItem -Path путь -Directory | Where-Object {условие} | Remove-Item -Recurse -Force
Этот метод включает несколько ключевых компонентов PowerShell:
- Get-ChildItem. Команда для получения списка объектов (файлов и папок) в указанной директории. Параметр -Directory ограничивает вывод только папками, исключая файлы из рассмотрения. Эта команда является начальным этапом конвейера и подготавливает список папок для последующей фильтрации. Get-ChildItem имеет множество параметров для глубокого поиска и фильтрации, включая -Recurse для поиска во вложенных директориях.
- Where-Object. Позволяет фильтровать результаты по различным критериям, таким как имя папки, дата создания или изменения, размер и другие атрибуты. Например, можно выбрать только папки, созданные раньше определенной даты или имеющие определенное слово в названии. Эта часть конвейера обеспечивает точный отбор директорий для удаления на основе заданных условий.
- Remove-Item. Финальная команда в конвейере, которая удаляет отфильтрованные директории. Использование параметров -Recurse и -Force обеспечивает полное удаление папок вместе со всем содержимым и преодоление ограничений доступа. Эта команда получает на вход только те папки, которые прошли через фильтры предыдущих команд в конвейере.
Популярные условия для фильтрации папок в PowerShell
При использовании конструкции Where-Object в PowerShell правильно сформулированные условия играют ключевую роль в точном отборе папок для удаления. Условия фильтрации позволяют указать конкретные характеристики директорий, которые необходимо обработать. Это значительно снижает риск случайного удаления важных папок и повышает точность операций массового удаления. Ниже приведены наиболее востребованные условия, которые можно использовать в команде Where-Object для эффективной фильтрации папок перед их удалением.
- Фильтрация по имени папки. Позволяет выбрать папки, содержащие определенный текст в названии:
Where-Object { $_.Name -like "*backup*" }
выберет все папки, в названии которых есть слово «backup». Для точного совпадения используйте оператор -eq:Where-Object { $_.Name -eq "temp" }
. Можно также использовать регулярные выражения с оператором -match:Where-Object { $_.Name -match "^log_\d+" }
для поиска папок, начинающихся с «log_» и содержащих цифры. - Фильтрация по дате создания. Позволяет отбирать папки, созданные в определенный период:
Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-30) }
выберет папки, созданные более 30 дней назад. Для выбора папок, созданных в конкретный день:Where-Object { $_.CreationTime.Date -eq (Get-Date "2024-01-15").Date }
. Также можно указать диапазон дат:Where-Object { $_.CreationTime -ge (Get-Date "2024-01-01") -and $_.CreationTime -le (Get-Date "2024-01-31") }
. - Фильтрация по дате изменения. Позволяет выбирать папки по дате последнего изменения:
Where-Object { $_.LastWriteTime -gt (Get-Date).AddMonths(-1) }
выберет папки, измененные за последний месяц. Для выбора давно неиспользуемых папок:Where-Object { $_.LastWriteTime -lt (Get-Date).AddYears(-1) }
найдет директории, не изменявшиеся более года. - Фильтрация по атрибутам. Позволяет выбирать папки с определенными атрибутами:
Where-Object { $_.Attributes -match "Hidden" }
выберет все скрытые папки. Для поиска только обычных папок без специальных атрибутов:Where-Object { -not ($_.Attributes -match "System|Hidden|ReadOnly") }
. Можно комбинировать несколько атрибутов:Where-Object { $_.Attributes -match "Hidden" -and $_.Attributes -match "ReadOnly" }
. - Фильтрация по размеру. Для подсчета размера папок и выбора по размеру можно использовать:
Get-ChildItem -Directory | ForEach-Object { $size = (Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum).Sum; [PSCustomObject]@{Name=$_.Name; Size=$size} } | Where-Object { $_.Size -gt 1GB } | Select-Object Name, @{Name="SizeGB";Expression={$_.Size/1GB}} | ForEach-Object { Remove-Item (Join-Path -Path $путь -ChildPath $_.Name) -Recurse -Force }
. Это позволит удалить папки размером более 1 ГБ. - Комбинированные условия. Можно объединять несколько условий с помощью логических операторов -and и -or:
Where-Object { $_.Name -like "*temp*" -and $_.LastWriteTime -lt (Get-Date).AddDays(-7) }
выберет временные папки, не изменявшиеся более недели. Другой пример:Where-Object { ($_.Name -like "*backup*" -or $_.Name -like "*archive*") -and -not ($_.Attributes -match "System") }
выберет все папки резервных копий и архивов, не являющиеся системными.
Способ 4: Использование команды DELTREE в режиме совместимости
Для пользователей, знакомых с более старыми версиями DOS и Windows, может быть интересна возможность использования классической команды DELTREE. Хотя эта команда официально не поддерживается в современных версиях Windows, существует возможность эмулировать ее работу через создание специального макроса или алиаса в системе. DELTREE была популярна в эпоху DOS и ранних версий Windows благодаря своей простоте и эффективности при удалении целых директорий. Основное преимущество DELTREE заключалось в том, что она изначально была предназначена для рекурсивного удаления папок со всем содержимым, не требуя дополнительных параметров, как в случае с RMDIR /S.
DOSKEY DELTREE=RMDIR /S /Q $*
После создания этого алиаса можно использовать команду DELTREE следующим образом:
DELTREE путь_к_директории
Важные особенности использования DELTREE:
- Создание алиаса. Команда DOSKEY позволяет создать временный алиас DELTREE, который будет работать в текущей сессии «Командной строки». Чтобы сделать этот алиас постоянным, необходимо создать файл макросов и настроить автозагрузку этого файла при запуске консоли. Такой подход позволяет восстановить функциональность классической команды DOS в современных системах Windows.
- Автоматическое удаление. Созданный алиас DELTREE автоматически включает параметры /S и /Q для команды RMDIR, что обеспечивает рекурсивное удаление директорий без запроса подтверждения. Это делает команду более похожей на оригинальную DELTREE из DOS. Пользователю следует помнить, что такой алиас не запрашивает подтверждения, поэтому следует быть предельно внимательным при его использовании.
- Совместимость. Хотя этот метод эмулирует поведение классической команды DELTREE, важно понимать, что фактически выполняется команда RMDIR с параметрами. Поэтому все ограничения и особенности RMDIR также применимы к этому алиасу. Этот подход особенно полезен для пользователей, привыкших к синтаксису более старых операционных систем или при миграции скриптов с устаревших платформ.
Наша группа в TelegramПолезные советы и помощь
Если вы не можете удалить какие-то файлы или папки со своего компьютера под управлением ОС Windows, то мы рекомендуем вам воспользоваться такое полезной штуковиной, как PowerShell. При помощи данного средства вы без каких-либо проблем можете удалить из системы файлы и папки, которые сложно или и вовсе нельзя удалить традиционными методами.
PowerShell для удаления файлов и папок
Чтобы удалить из системы файлы и папки с помощью Windows PowerShell, вам нужно придерживаться следующих шагов:
- откройте Windows PowerShell;
- найдите нужный файл или папку;
- выполните команду по удалению объекта.
Верно, все настолько просто. Однако давайте все-таки пройдемся по процессу удаления через PowerShell немного поподробней.
Удаление одного файла через PowerShell
Прежде все, вам необходимо открыть перед собой окошко PowerShell. Для этого нажмите на клавиатуре комбинацию Windows+S, а затем пропишите запрос PowerShell. Нажмите правой кнопкой на найденный результат и выберите «Запуск от имени администратора».
Чтобы удалить какой-то определенный файл, вам нужно выполнить следующую команду:
Remove-item [путь к файлу]
В общем, довольно простая команда. Давайте предположим, что у вас на Рабочем столе есть папка под названием «Testfiles», а внутри нее лежит файл Testfiles.jpg, который вам нужно удалить. В таком случае вышеуказанная команда будет выглядеть следующим образом:
Remove-item C:\Users\[имя пользователя]\Desktop\Testfiles\Testfiles.jpg
Обязательно не забываем прописывать расширение файла под удаление, иначе PowerShell просто не разберет команду — файл останется на компьютере и вы увидите ошибку в окошке средства.
Удаление одной папки через PowerShell
Хотите удалить какую-то конкретную папку в своей ОС Windows? Тогда вам нужно использовать точно такую же команду, что и ранее.
Remove-item [путь к папке]
Давайте предположим, что у вас на Рабочем столе есть папка под названием «Testfiles» — вы хотите от нее избавиться. В таком случае команда примет следующий вид:
Remove-item C:\Users\[имя пользователя]\Desktop\Testfiles
Если папка пустая, то она будет удалена сразу же. Тем не менее при наличии хоть каких-то файлов в ней вам придется нажать на кнопки Y и Enter, чтобы подтвердить их удаление. В окошке PowerShell будут подсказки начнет того, за что отвечают какие кнопки.
Удаление нескольких файлов через PowerShell
Если вы хотите избавиться сразу от нескольких файлов через PowerShell, то вам потребуется использовать уже несколько иную команду. Выглядеть она будет следующим образом:
Remove-item [путь к файлу], [путь к файлу1], [путь к файлу2]
Верно, вам придется вводить местоположение для каждого файла, который вы хотите удалить из своей системы. Предположим, что у вас на Рабочем столе есть файл AnotherTest.txt, а в папке Downloads — AnotherTest1.jpg. Что делать, если их оба нужно удалить? В таком случае команда для PowerShell будет выглядеть следующим образом:
Remove-item C:\Users\[имя пользователя]\Desktop\AnotherTest.txt, C:\Users\[имя пользователя]\Downloads\AnotherTest1.jpg
Удаление нескольких папок через PowerShell
Команда для удаления нескольких папок мало чем отличается от команды, предназначенной для удаления нескольких файлов. Используя прошлые примеры, команда в PowerShell для нескольких папок будет выглядеть следующим образом:
Remove-item C:\Users\[имя пользователя]\Desktop\AnotherTest, C:\Users\[имя пользователя]\Downloads\AnotherTest1
Опять-таки, если в этих папках будут располагаться какие-то файлы, то вам потребуется подтвердить их удаление в окне PowerShell, нажав Y и Enter. Кроме того, стоит отметить, что файлы и папки, удаленные подобным образом, не попадают в Корзину на Рабочем столе, а сразу же удаляются из системы.
Проверка наличия файлов в папке через PowerShell
Если вы не можете открыть папку, но хотите знать, что в ней находится, то можете воспользоваться следующей командой:
Get-ChildItem [путь к папке]
Например, если вы хотите заглянуть внутрь папки «AnotherTest2», располагающейся на Рабочем столе, то команда будет выглядеть вот так:
Get-ChildItem C:\Users\[имя пользователя]\Desktop\AnotherTest2
Задействовав данную команду, вы увидите несколько колонок, в которых будет содержаться полезная информация касательно файлов внутри нужной вам папки. Последняя колонка (по умолчанию) будет отвечать за название файлов. Так вы будете знать, стоит ли удалять эту папку или нет.
Проверка последнего изменения и времени создания через PowerShell
Если вы хотите понять, когда был создан и изменен какой-то объект (папка или файл) в вашей системе, то вам нужно выполнить в PowerShell следующую команду:
Get-ChildItem C:\Users\[имя пользователя]\Desktop\AnotherTest2 | Select-Object FullName, LastWriteTime, CreationTime
Принудительное удаление объекта через PowerShell
У вас не получится использовать вышеуказанные команды для удаления скрытых файлов и файлов с атрибутом только для чтения. Если вы попытаетесь это сделать, то в окошке PowerShell вас встретит ошибка. Тем не менее вы можете принудительно избавиться от тех или иных файлов/папок, задействовав параметр -force. Предположим, что у вас на Рабочем столе есть папка AnotherTest3 со скрытыми файлами внутри и вы хотите избавиться от нее. Для удаления этой папки вам нужно выполнить в PowerShell следующую команду:
Remove-item C:\Users\[имя пользователя]\Desktop\AnotherTest3 -force
Как и всегда, при желании удалить два или больше объектов вам понадобится нажать Y и Enter в окошке PowerShell, чтобы подтвердить свои намерения.
Удаление файлов/папок без подтверждения через PowerShell
Кстати, говоря о подтверждения об удалении, не хотите постоянно заниматься ими? Тогда вы можете пропустить эти запросы, применив к команде на удаления особый параметр. Такая команда будет выглядеть следующим образом:
Remove-item C:\Users\[имя пользователя]\Desktop\AnotherTest3 -recurse
После ввода этой команды все указанные файлы и папки будут сразу же удалены с вашего компьютера — подтверждать ничего не нужно.
Исключение из команды на удаление в PowerShell определенных файлов
Давайте представим, что у вас есть несколько файлов с различными расширениями, например, TXT, PNG, DOCX, PDF и так далее. Вы хотите удалить всё, за исключением файлов с расширением TXT. В таком случае вам нужно задействовать вместе с соответствующей командой параметр -exclude. Вот что у вас должно получиться:
Remove-Item –path C:\Users\[имя пользователя]\Desktop\AnotherTest3* -exclude *.txt
Как вы уже могли догадаться, из папки AnotherTest3 будут удалены абсолютно все объекты, за исключением текстовых файлов. Очень удобная команда для очистки какой-то папки, в которой намешано очень много разных файлов, и вам нужно отфильтровать ее, избавившись от всего ненужного.
Quick Links
-
Before You Begin: How to Find a File or Folder’s Full Path
-
How to Delete a Specific File Using PowerShell
-
How to Delete a Specific Folder Using PowerShell
-
How to Delete All Files in a Folder But Keep the Folder
-
How to Delete All Files From a Folder and Its Subfolders
-
How to Delete Files With Wildcards
Summary
- To delete a file or folder, use the «Remove-Item PATH» cmdlet in PowerShell. In this command, replace «PATH» with the full path to the file or folder you want to remove.
- To delete all files in a folder but keep the folder, use the «Remove-Item PATH\*.*» command, where «PATH» is the full path to the folder.
- To remove all files from a folder and its subfolders, use the «Remove-Item PATH -Recurse -Include *.*» command, replacing «PATH» with the full path to your parent folder.
PowerShell offers a straightforward way to delete files and folders on your Windows 11 or Windows 10 PC. You can remove folders, all files inside a folder, specific files from the specified directory, and so on using just a few commands. Here’s how to do that.
Before You Begin: How to Find a File or Folder’s Full Path
To remove files or folders from your Windows PC, you’ll need the item’s full path. If you know how to get file or folder paths, skip to the relevant section below. If you aren’t sure how to copy a file or folder’s full path, we’ll show you how.
First, open a File Explorer window and locate the file or folder whose path you want to find. Then, hold down the Shift key on your keyboard, right-click your file or folder, and choose «Copy as Path.»
You’ve successfully copied the selected item’s path to your clipboard. You can now paste this path (using Ctrl+V) wherever required within the PowerShell window.
How to Delete a Specific File Using PowerShell
To remove a specific file from your PC, use PowerShell’s «Remove-Item» cmdlet.
Start by opening a PowerShell window on your PC. Here, type the following command, replace «PATH» with the full path to the item you want to delete, and press Enter:
Remove-Item PATH
As an example, to delete a file named «Old-List.txt» on your desktop, you’d run:
Remove-Item "C:\Users\username\Desktop\Old-List.txt"
Note that the command won’t ask for a confirmation before deleting your file. If you’d like the command to do that, add the «Confirm» parameter as follows:
Remove-Item "C:\Users\username\Desktop\Old-List.txt" -Confirm
How to Delete a Specific Folder Using PowerShell
You can use PowerShell’s «Remove-Item» cmdlet to remove any directory from your PC.
Deleting a folder removes all the subfolders and files inside it.
To start, launch PowerShell, type the following command, replace «PATH» with your directory’s full path, and press Enter:
Remove-Item PATH
As an example, to delete a directory named «Old Files» from your desktop, you’d run:
Remove-Item "C:\Users\username\Desktop\Old Files"
How to Delete All Files in a Folder But Keep the Folder
If you want to remove all files from a folder but retain the folder, use the «Remove-Item» cmdlet as follows.
In your PowerShell window, type the following command, replace «PATH» with the full path to the folder you want to empty, add «\*.*» before the final quotation mark, and press Enter:
Remove-Item PATH\*.*
For example, to delete all files from a folder named «Your Files» from the desktop, run:
Remove-Item "C:\Users\username\Desktop\Your Files\*.*"
In this command, the first asterisk selects files with any name, and the second asterisk chooses files with any extension. This translates to selecting all the files in the specified folder.
How to Delete All Files From a Folder and Its Subfolders
If you’re looking to remove all files from a folder and its subfolders, add the «Recurse» and «Include» parameters to the «Remove-Item» cmdlet.
Open a PowerShell window, enter the following command, replace «PATH» with the full path to the folder, and press Enter:
Remove-Item PATH -Recurse -Include *.*
Here, the «Recurse» parameter ensures the subfolders’ files are deleted as well. The «Include» parameter ensures files with any name and extension are removed.
As an example, to remove all files from the «Downloads» folder and its subfolders on the desktop, run:
Remove-Item "C:\Users\username\Desktop\Downloads" -Recurse -Include *.*
How to Delete Files With Wildcards
PowerShell offers wildcards, allowing you to delete various kinds of files by just specifying those file types in your command. In all the examples below, replace «PATH» with the full path to your folder.
For example, if you want to remove all the JPG files from a folder, use the following command:
Remove-Item PATH -Include *.jpg
Another use of wildcards is to delete all but a specific file type from your directory. For example, to remove all files except for PDF files from a folder, use the following command:
Remove-Item PATH -Exclude *.pdf
Another advanced use of PowerShell is to remove all empty folders from the given directory. In this case, use the following command, replacing «PATH» with the full path to the directory:
Get-ChildItem -Recurse PATH | where { $_.PSISContainer -and @( $_ | Get-ChildItem ).Count -eq 0 } | Remove-Item
And you’re set.
Now that you know how to delete items with PowerShell, you won’t be stuck when File Explorer refuses to work. PowerShell offers more ways than File Explorer to help you remove content, like the ability to only remove specific files with a single command.
Updated March 6, 2023
Introduction to PowerShell Delete Folder
PowerShell folder delete operation is to remove the folder from the specified location, whether its local path or the shared path using the cmdlet Remove-Item or other .Net approach, which performs to delete the folders or the subfolders and their contents and uses the specific switches to deal with the different types of the folder attributes like Read-only, hidden, etc to remove them.
Syntax of PowerShell Delete Folder
PowerShell uses various methods to delete the folders from the Windows operating system.
1. PowerShell Remove-Item Method
Syntax:
Remove-Item
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-Stream <String[]>]
[<CommonParameters>]
Remove-Item
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-Stream <String[]>]
[<CommonParameters>]
From the above sets, you can use the combination of one only. You can’t use -Path and -LiteralPath both in the same command.
2. Command Prompt
- Using rmdir command
rmdir [<drive>:]<path> [/s [/q]]
- Using del
del [/p] [/f] [/s] [/q] [/a[:]<attributes>] <names>
erase [/p] [/f] [/s] [/q] [/a[:]<attributes>] <names>
3. FileSystem Object Method
Using the FileSystem Object Method. We can create a file system object and use the DeleteFolder method.
object.DeleteFolder folderspec, [ force ]
4. Using .Net Class Approach
[System.IO.Directory] .Net class uses the method Delete() folder.
[System.IO.Directory]::Delete(String)
[System.IO.Directory]::Delete(String,Boolean)
How to Delete Folders in the PowerShell?
As shown in the syntax, PowerShell uses various methods like Native command Remove-Item, cmd commands rmdir and del, File System Object method, and .Net approach to delete the files from the folder.
Window System folder has various attributes associated with it like Read-Only, Hidden, Archive, etc, and to delete them we may need the various parameters to pass in the cmdlet.
Examples to Implement of PowerShell Delete Folder
Below we discuss examples of PowerShell Delete Folder:
Example #1
Remove-Item to delete the folder with Subfolders and files
Consider we have a folder stored at the location C:\temp\Test\ and we need to delete that folder using the Remove-Item command. The folder contains the below items.
Command:
Get-ChildItem C:\Temp\Test\
Output:
To remove the items,
Remove-Item C:\Temp\Test\ -Verbose
Once you run this command, it will ask for confirmation.
You can press ‘Yes’ every time or ‘Yes to All’ to confirm all the files and folders.
This prompt is generated because the Test folder contains the subfolders and files, use the -Recurse Parameter to delete all the inside files and folders and -Force parameter to delete them forcefully.
Remove-Item C:\Temp\Test\ -Recurse -Force -Verbose
Output:
Example #2
Use -WhatIF parameter With Remove-Item to avert wrong folder deletion. We can use -WhatIf parameter that shows which files and folders will get deleted to avert any wrong folder deletion. See the example below.
Remove-Item C:\Temp\Test\ -Recurse -Force -WhatIf -Verbose
Output:
If you have permission to delete the remote folder then you can provide the shared path of the folder there. For example,
Remove-Item '\\Computer1\C$\Temp\Test\' -Recurse -Force -WhatIf -Verbose
The above command will delete the C:\temp\Test folder on the remote computer Computer1.
Example #3
Use Remove-Item as the pipeline. We can retrieve the files and folder content with the Get-ChildItem and Remove-Item to pipeline the output of the first command to remove the folder.
Get-ChildItem C:\Temp\Test\ | Remove-Item -Recurse -Force -Verbose
The problem with this approach is that it deletes the content of the folder but not the folder itself. You need to add more logic to delete but if you want to delete the specific subfolder inside the parent folder then this method is useful that we will see in the example8.
Example #4
Using cmd commands to delete the folder.
- Using del
When we use the Del command it only deletes the inside files and folders and but leaves the original folder empty.
del c:\Temp\Test\
When you run this command to delete the test folder content, it will prompt for deletion.
To delete the subfolders, files including read-only, forcefully use the below command.
c:\>del c:\Temp\Test /s /q /f
Output:
- Use the rmdir to delete the folder instead of the del
rmdir C:\Temp\Test
when you run the above command, you will get the message as below because the directory contains the subfolders and files.
Use the below command to delete the specified folder, subfolders, and files in quiet mode.
c:\>rmdir C:\Temp\Test /s /q
Example #5
Using File System Object method. We can also delete the folder using the ComObject FileSystemObject as shown below.
$obj = New-Object -ComObject Scripting.FileSystemObject
$obj.DeleteFolder("C:\Temp\Test")
Example #6
Using .Net Class method. We can use the .Net class System.IO.Directory with the Delete() method to delete the folder.
For example:
PS C:\> [System.IO.Directory]::Delete("C:\Temp\Test")
When you run the above command, it throws an exception that the directory is not empty because the above command is meant to delete the empty directory.
So to delete the folder, add the second parameter $true for deleting the folder which is not empty.
[System.IO.Directory]::Delete("C:\Temp\Test", $true)
Example #7
Using PowerShell DSC to delete the folder. Using the declarative method DSC to delete the folder.
Configuration FolderDelete{
Node Localhost{
File TestFolderDelete{
DestinationPath = 'C:\Temp\Test'
Type = 'Directory'
Ensure = 'Absent'
Force = $true
}
}
}
FolderDelete -OutputPath C:\Temp\FolderDelete\ -Verbose
Start-DscConfiguration -Path C:\Temp\FolderDelete -Wait -Force -Verbose
Output:
The above command will store the configuration in C:\temp\FolderDelete, and make sure that the path exists before you run the script and it will generate the MOF file.
You can also provide the remote nodes in the Node section like
Node @("Computer1","Computer2")
Example #8
Delete the hidden folders using PowerShell. To remove the hidden folders we first need to retrieve the hidden folder using Get-ChildItem.
Get-ChildItem C:\Temp\Test\ -Hidden
Output:
We will append Remove-Item as a Pipeline to delete that hidden folder.
Get-ChildItem C:\Temp\Test\ -Hidden | Remove-Item -Force -Recurse -Verbose
Output:
Conclusion
Windows File Explorer is used to interact with the file system files and folders but for the various reasons we need to delete the folder when we write a script or for the regular maintenance of the system we need to delete the folders to free up the extra space, we can use the methods described in this article.
Recommended Articles
This is a guide to PowerShell Delete Folder. Here we discuss a brief overview on the PowerShell Delete Folder, its syntax, methods and its Examples along with Code Implementation. You may also have a look at the following articles to learn more–
- PowerShell Loop through Array
- PowerShell Dictionary
- Powershell Copy File
- PowerShell join string
Deleting folders and cleaning up directories can be a time-consuming task, especially when you need to perform the same task on multiple computers. With PowerShell, we can easily create a small script to find and delete all the folders you want.
The advantage of PowerShell is that it allows us not to only delete a single folder, but complete directories or only folders with a specific name. It’s also possible to delete only empty folders for example.
In this article
In this article, we are going to take a look at how to delete folders with PowerShell, and how to use the different options to delete only specific folders.
To delete folders with PowerShell we will need to use the Remove-Item
cmdlet. This cmdlet can not only be used to delete folders, but also for removing files, registry keys, and more. We will focus on deleting folders in this article.
The Remove-Item cmdlet comes with a couple of parameters that we can use to specify the folder that we want to remove:
Parameter | Description |
---|---|
-Path | Specify the path of the items that need to be removed. |
-LiteralPath | The exact path the item |
-Include | Specifies a path element to include, for example, *.txt |
-Exclude | Specifies a path element to exclude, for example, *.txt |
-Recurse | Delete items in the specified location and in all subfolders |
-Force | Used to delete read-only files or hidden items |
-Confirm | Prompt for confirmation |
-WhatIf | Run the command in test mode. Won’t delete anything |
To delete a single folder in PowerShell, we will need to specify the full path to the folder. Good to know is that this command will delete the folder with all contents in it, even if you haven’t specified the -recurse
parameter. You will get a warning though if you haven’t used the -recurse
parameter and the folder contains content.
So it’s important that you check if you have the correct folder before you actually delete it. That is why I recommend to run the command first with the -WhatIf
parameter to check the result:
# Remove the folder D:\testfiles\folder in test mode Remove-Item -Path "D:\testfiles\folder" -WhatIf
In the example below, the folder wasn’t empty. So we will need to confirm that we want to delete the folder and the content.
The last line, What If, shows which operation is performed on the target path:
Instead of -WhatIf
we can also force the confirm prompt. This way you can still double-check if you are deleting the correct folder and confirm the action before it’s deleted.
Remove-Item -Path "D:\testfiles\empty folder" -Confirm # Result: Confirm Are you sure you want to perform this action? Performing the operation "Remove Directory" on target "D:\testfiles\empty folder". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
Delete Folder and Contents
When you want to delete a folder and all its contents with PowerShell, then you must use the -Recurse
parameter. This way all subfolders, and files in the given directory will be removed. The parameter won’t give a warning, it will just remove all the contents.
The command below will delete “Folder A” and the contents of it:
# Delete folder A and all contents Remove-Item -Path "D:\testfiles\folder A" -Recurse
If you only want to delete all the content that is inside “folder A”, then we must use a wildcard inside the -path
parameter:
# Delete all subfolders and content inside Folder A Remove-Item -Path "D:\testfiles\folder A\*" -Recurse
Force Delete Folder
When you try to delete a folder that contains read-only items or items that are in use, you will get an error message that you do have not sufficient access rights to perform this operation.
To delete a folder that contains a read-only item, hidden files, or files that are in use, you can use the -Force
parameter:
Remove-Item -Path "D:\testfiles\folder B" -Force # or in short: rm -r -force "D:\testfiles\folder"
Delete Multiple Folders
To delete multiple folders with a single command we can either specify multiple paths or use one of the filtering options. I will explain filters later in this article. You can specify multiple folders to delete by using a comma-separated string:
Remove-Item -Path "D:\testfiles\folder d", "D:\testfiles\folder e" -Recurse
Another option is to create an array with all the paths and loop through them with a foreach statement.
Delete Folder if Exists
When using the Remove-Item
cmdlet inside scripts, it’s a good idea to test if the folder exists before you try to delete it. We can do this by using the Test-Path cmdlet. This will check if the folder exists and return true
or false
based on the result. By using this inside an if statement we can make sure that the folder is only deleted if it exists:
$folder = "D:\testfiles\folder B" if (Test-Path -Path $folder ) { Remove-Item -Path $folder }
Using Filters to Delete Folders in PowerShell
We have now looked at the basic principles to delete a folder with PowerShell. But besides deleting a folder from a specific path, you often encounter situations where you need to delete all folders that are older than x days or contain a specific word in the folder name.
There are a couple of methods to select only the folders that we need to remove in PowerShell. But with all methods, make sure that you test the selection first before you actually delete the folders.
Using the Include Filter
The -include
filter allows you to specify a part of the string that the file or folder must contain that you want to delete. It works in combination with the wildcard character in the path.
Important to note here is that both files and folders are deleted that contain the given name. For example, to delete all folders (and thus also files) that have the word test in them:
Remove-Item -Path "D:\testfiles\folder c\*" -Include "*test*"
You can also specify multiple keywords for the include filter, simply separate them with a comma.
Using the Exclude Filter
With the -exclude
filter, we can delete all the contents in a specific folder, except folders that have a specified word in the name. Again, the filter works on both files and folders, so all files that match the filter as well won’t be removed.
For example, to remove all files and folders from the specified path, except the contents in the folder “la-test-folder”, we can do:
Remove-Item -Path "D:\testfiles\folder c\*" -Exclude "la-test-folder"
Just like with the include filter, you can use a wildcard in the exclude string, or specific multiple strings (folder names) to match.
Delete Folders older than
A situation that is quite common is to delete all folders that are older than x days. To do this we will first need to calculate the folder date. Let’s say we want to delete all folders that are older than 30 days. The first step is to get the date from 30 days ago:
# Get the date from today minus 30 days $dateTime = (Get-Date).AddDays(-30)
The next step is to get all the folders in the given path that are older than the given date. We can do this by comparing the lastwritetime
of the folder with the datetime
that we calculated:
Get-ChildItem -Path $Path -Recurse -Directory | Where-Object { $_.LastWriteTime -lt $dateTime }
We now only have to pipe the Remove-Item cmdlet behind it to actually delete the folder and its contents. Again first test the results with the -WhatIf
parameter before actually deleting the folders.
$dateTime = (Get-Date).AddDays(-30) $path = "d:\testfiles\" Get-ChildItem -Path $Path -Recurse -Directory | Where-Object { $_.LastWriteTime -lt $dateTime } | Remove-Item -Recurse -WhatIf
Remove Empty Folders
To remove only empty folders with PowerShell you will need to create a small script. The script will need to check for each subfolder in the given folder if it contains items or not. When it doesn’t contain any items only then can the folder be deleted.
I created a script that you can use the remove empty folders, you can find the script in this article.
Wrapping Up
PowerShell is a great tool when you need to delete multiple folders or want to clean up a particular directory automatically. Keep in mind that the Remove-Item cmdlet is also used to delete files, so make sure you test your scripts before using them.
Also, keep in mind that your files are deleted permanently, they won’t go to the recycle bin.
I hope you found this article useful, if you have any questions, just drop a comment below.