Windows удалить не пустой каталог

В командной строке Windows для удаления папок (каталогов) используется команда rmdir. С помощью данной команды можно удалить одну или несколько папок в указанном каталоге в месте с ее содержимым (включая все файлы).

Синтаксис


rmdir [<drive>:] <path>  [[/s] [/q]]

Параметры


Параметр Описание
<drive>: Указывает расположение и имя каталога, который требуется удалить.
<path> Путь является обязательным. Если включить обратную косую черту () в начале указанного пути, то путь начинается с корневого каталога (независимо от текущего каталога).
/s Удаляет дерево каталогов (указанный каталог и все его подкаталоги, включая все файлы).
/q Задает тихий режим. Не запрашивает подтверждение при удалении дерева каталогов. Параметр /q работает только в том случае, если также указан параметр /s .
/? Отображение справки в командной строке.

При запуске в тихом режиме все дерево каталогов удаляется без подтверждения. Перед использованием параметра командной строки /q убедитесь, что важные файлы перемещаются или создаются резервные копии.

Команда rmdir не сможет удалить каталог содержащий скрытые или системные файлы. При попытке появится следующее сообщение:

The directory is not empty (Каталог не пустой).

Используйте команду dir /a , чтобы получить список всех файлов (включая скрытые и системные). Затем используйте команду attrib с параметром -h , чтобы удалить скрытые атрибуты файла, -s , чтобы удалить атрибуты системного файла, или -h -s , чтобы удалить как скрытые, так и системные атрибуты файлов. После удаления скрытых атрибутов и файлов можно удалить файлы.

Вы не можете использовать команду dir /a для удаления текущего каталога. При попытке удалить текущий каталог появляется следующее сообщение об ошибке:

The process can’t access the file because it is being used by another process (Процесс не может получить доступ к файлу, поскольку он используется другим процессом).

Если появляется это сообщение об ошибке, необходимо выполнить переход в другой каталог (не в подкаталог текущего каталога), а затем повторить попытку.

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


Чтобы удалить каталог с именем MyDrectory в текущем каталоге, введите:

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

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

Также вы можете указать полный путь к удаляемой папке. Например, для того чтобы удалить папку в корне системного диска с:\ нужно выполнить:

rmdir c:\MyDirectory

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

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

Как удалить несколько каталогов включая их содержимое в Windows


Если нужно удалить сразу несколько каталогов включая их содержимое то есть все файлы которые находятся в этих каталогах. В этом примере удаляются каталоги и файлы в каталоге MyDirectory:

rmdir /s c:\MyDirectory

Как удалить несколько каталогов включая их содержимое в командной строке

Как удалить несколько каталогов включая их содержимое в командной строке

Как удалить каталог (папку) с ее содержимым рекурсивно без запроса для подтверждения в Windows


В этом примере удаляются каталог(папка) и все файлы находящиеся в каталоге MyDirectory без запроса подтверждения:

rmdir /s /q c:\MyDirectory

Как удалить каталог) с ее содержимым рекурсивно без запроса для подтверждения

Как удалить каталог) с ее содержимым рекурсивно без запроса для подтверждения

После того, как вы выполните эти шаги, каталог и ее содержимое будут удалены.

Параметр /s удаляет каталог и егосодержимое в приведенной выше команде, но запрашивает у пользователя подтверждение. Параметр /q игнорирует приглашение и рекурсивно удаляет каталог.

For the previous answer, I checked the current Microsoft documentation about commands it has, and it does NOT say clearly that the del command will delete only files.

The command you need to recursively delete a folder, and all files OR folders it contains is:

rmdir [name of the folder] /s /q

Please note the «/s» and «/q» arguments, which have the same meaning as for the del command, but they come AFTER the name of the folder! This is what the command documentation shows, as you may read here.

But there are more possible reasons for the recursive directory deletion failing! If you try to delete a directory that has system files or hidden files, the rmdir command will fail. To solve this problem, you need to do more work. To quote the documentation pointed above:

You can’t delete a directory that contains files, including hidden or system files. If you attempt to do so, the following message appears:

The directory is not empty

Use the dir /a command to list all files (including hidden and system files). Then use the attrib command with -h to remove hidden file attributes, -s to remove system file attributes, or -h -s to remove both hidden and system file attributes. After the hidden and file attributes have been removed, you can delete the files.

Рекомендации помогут Вам полностью удалить папку через командную строку. В статье про удаление файла из командной строки, использовалась команда DEL, которая предназначена именно для файлов. В случае с папками, применимы команды RD или RMDIR.

Для достижения цели, откройте cmd c привилегиями администратора. Введите RD /? и бегло ознакомьтесь с особенностями и параметрами команды. Здесь Вы увидите всего лишь  2 параметра:

  1. /s — при использовании этого префикса, удалится папка, а также все вложенные в нее элементы. Если Ваш каталог не пустой, и Вы не прописали это параметр, тогда у Вас ничего не выйдет.
  2. /Q — используется  при удалении без подтверждения.

справка по командам RD и RMDIR

В общем виде конструкция выглядит таким образом:

RD или RMDIR /s/q “полный путь папки”

Примечание:  при применении конструкции, каталог и его содержимое полностью удалится с компьютера и Вы не найдете его в корзине. Для безопасности сделайте резервную копию папки.

Удаление папки с подтверждением и без

У себя на компьютере я создал каталог с названием «cmd» и  скопировал в него несколько объектов. Далее ввел в командную строку такую команду:

RD /s “c:\cmd”

Затем нажал Enter и клавишу Y, так как cmd сделала запрос на подтверждение удаления.

Удаление папки с подтверждением

Проверив диск C, я не обнаружил каталога. Далее создал папку с именем «удалить» и также скопировал 5 файлов, но при вводе команды, убрал префикс /s. Получилось так:

RMDIR “c:\удалить”

После нажатия Enter, удаления не произошло, а в командной строке высветилось сообщение, что папка не пуста. Вывод, без параметра /s Вы сможете удалить только пустую папку, следовательно, использование без данного префикса практически бесполезно.

использование без параметра /s

Если Вам лень вводить букву подтверждения (Y или N), тогда следующая конструкция для Вас. Выше упоминался префикс /q, именно он убирает надоедливый ввод букв (для доказательства смотрите скрин).

Удаляем папку без подтверждения

Вот и все, такими действиями Вы без проблем сможете удалить папку из командной строки, используя вовсе не сложный синтаксис. Со знаниями cmd ваши любые задумки превратятся в реальность, с которыми Вы даже выключите компьютер  из командной строки и сделаете многое другое.

Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.

I am making a batch script and part of the script is trying to remove a directory and all of its sub-directories. I am getting an intermittent error about a sub-directory not being empty. I read one article about indexing being the culprit. I disabled WSearch but I eventually got the error again. Here’s the command:

rmdir /S /Q "C:\<dir>\"

Rose's user avatar

Rose

2,8024 gold badges28 silver badges42 bronze badges

asked Apr 8, 2014 at 21:07

Mayhem's user avatar

1

I experienced the same issues as Harry Johnston has mentioned. rmdir /s /q would complain that a directory was not empty even though /s is meant to do the emptying for you! I think it’s a bug in Windows, personally.

My workaround is to del everything in the directory before deleting the directory itself:

del /f /s /q mydir 1>nul
rmdir /s /q mydir

(The 1>nul hides the standard output of del because otherwise, it lists every single file it deletes.)

answered Sep 16, 2015 at 11:26

BoffinBrain's user avatar

BoffinBrainBoffinBrain

6,3376 gold badges33 silver badges59 bronze badges

6

I’m familiar with this problem. The simplest workaround is to conditionally repeat the operation. I’ve never seen it fail twice in a row — unless there actually is an open file or a permissions issue, obviously!

rd /s /q c:\deleteme
if exist c:\deleteme rd /s /q c:\deleteme

answered Apr 8, 2014 at 22:47

Harry Johnston's user avatar

Harry JohnstonHarry Johnston

35.7k6 gold badges68 silver badges159 bronze badges

6

I just encountered the same problem and it had to do with some files being lost or corrupted. To correct the issue, just run check disk:

chkdsk /F e:

This can be run from the search windows box or from a cmd prompt. The /F fixes any issues it finds, like recovering the files. Once this finishes running, you can delete the files and folders like normal.

answered Feb 2, 2017 at 5:22

jrose's user avatar

jrosejrose

5496 silver badges11 bronze badges

2

enter the Command Prompt as Admin and run

rmdir /s <FOLDER>

answered May 2, 2018 at 15:24

Adilson Cabral's user avatar

1

I had a similar problem, tried to delete an empty folder via windows explorer. Showed me the not empty error, so I thought I try it via admin cmd, but none of the answers here helped.

After I moved a file into the empty folder. I was able to delete the non empty folder

answered Apr 3, 2018 at 11:11

Grisu118's user avatar

Grisu118Grisu118

3391 gold badge3 silver badges7 bronze badges

3

As @gfullam stated in a comment to @BoffinbraiN’s answer, the <dir> you are deleting itself might not be the one which contains files: there might be subdirectories in <dir> that get a «The directory is not empty» message and the only solution then would be to recursively iterate over the directories, manually deleting all their containing files… I ended up deciding to use a port of rm from UNIX. rm.exe comes with Git Bash, MinGW, Cygwin, GnuWin32 and others. You just need to have its parent directory in your PATH and then execute as you would in a UNIX system.

Batch script example:

set PATH=C:\cygwin64\bin;%PATH%
rm -rf "C:\<dir>"

answered Mar 31, 2016 at 14:04

Gobe's user avatar

GobeGobe

2,5691 gold badge25 silver badges24 bronze badges

Im my case i just moved the folder to root directory like so.

move <source directory> c:\

And then ran the command to remove the directory

rmdir c:\<moved directory> /s /q

answered Oct 11, 2015 at 10:05

Daniel Barde's user avatar

Daniel BardeDaniel Barde

2,6135 gold badges31 silver badges40 bronze badges

3

I had «C:\Users\User Name\OneDrive\Fonts», which was mklink’ed ( /D ) to «C:\Windows\Fonts», and I got the same problem. In my case

cd «C:\Users\User Name\OneDrive»

rd /s Fonts

Y (to confirm the action)

helped me. I hope, that it helps you too ;D

answered Dec 8, 2018 at 22:23

Maciej Bledkowski's user avatar

1

What worked for me is the following. I appears like the RMDir command will issue “The directory is not empty” nearly all the time…

:Cleanup_Temporary_Files_and_Folders

Erase /F /S /Q C:\MyDir

RMDir /S /Q C:\MyDir
If  Exist  C:\MyDir  GoTo Cleanup_Temporary_Files_and_Folders

Tamás Sengel's user avatar

Tamás Sengel

56.1k29 gold badges169 silver badges225 bronze badges

answered Jan 17, 2017 at 19:34

user7432246's user avatar

The reason rd /s refuses to delete certain files is most likely due to READONLY file attributes on files in the directory.

The proper way to fix this, is to make sure you reset the attributes on all files first:

attrib -r %directory% /s /d
rd /s %directory%

There could be others such as hidden or system files, so if you want to play it safe:

attrib -h -r -s %directory% /s /d
rd /s %directory%

answered Apr 22, 2020 at 1:59

Peter Hoeg's user avatar

Peter HoegPeter Hoeg

9019 silver badges13 bronze badges

0

one liner:

if exist folder rmdir /Q /S folder

I’m using this in a NPM script like so (Javascript) :

//package.json
  "scripts": {
    "start": "parcel --no-cache",
    "clean": "if exist dist rmdir /Q /S dist",
    "deploy": "npm run clean && parcel build --no-source-maps && firebase deploy"
  },

answered Nov 9, 2021 at 21:54

Alexandre Desroches's user avatar

Open CMD as administrator

chkdsk c: /F /R
  • Press the “Y” key if asked to check your disk the next time your system restarts.

Restart the machine. After that just delete the folder.

answered Mar 16, 2022 at 16:32

KR93's user avatar

KR93KR93

1,12811 silver badges10 bronze badges

Windows sometimes is «broken by design», so you need to create an empty folder, and then mirror the «broken folder» with an «empty folder» with backup mode.

robocopy - cmd copy utility

/copyall - copies everything
/mir deletes item if there is no such item in source a.k.a mirrors source with
destination
/b works around premissions shenanigans

Create en empty dir like this:

mkdir empty

overwrite broken folder with empty like this:

robocopy /copyall /mir /b empty broken

and then delete that folder

rd broken /s
rd empty /s

If this does not help, try restarting in «recovery mode with command prompt» by holding shift when clicking restart and trying to run these command again in recovery mode

Paul Roub's user avatar

Paul Roub

36.3k27 gold badges84 silver badges93 bronze badges

answered Jun 1, 2020 at 19:23

Kristijonas Grigorovičius's user avatar

1

I can think of the following possible causes:

  1. there are files or subdirectories which need higher permissions
  2. there are files in use, not only by WSearch, but maybe by your virus scanner or anything else

For 1.) you can try runas /user:Administrator in order to get higher privileges or start the batch file as administrator via context menu. If that doesn’t help, maybe even the administrator doesn’t have the rights. Then you need to take over the ownership of the directory.

For 2.) download Process Explorer, click Find/Find handle or DLL... or press Ctrl+F, type the name of the directory and find out who uses it. Close the application which uses the directory, if possible.

answered Apr 8, 2014 at 21:24

Thomas Weller's user avatar

Thomas WellerThomas Weller

55.6k20 gold badges126 silver badges223 bronze badges

2

Similar to Harry Johnston’s answer, I loop until it works.

set dirPath=C:\temp\mytest
:removedir
if exist "%dirPath%" (
    rd /s /q "%dirPath%" 
    goto removedir
)

answered May 1, 2017 at 21:46

BuvinJ's user avatar

BuvinJBuvinJ

10.3k5 gold badges83 silver badges96 bronze badges

Force delete the directory (if exists)

Delete.bat

set output_path="C:\Temp\MyFolder"
    
if exist %output_path% (
   echo Deleting %output_path%
   attrib -r /s /d %output_path%
   rd /s /q %output_path%
)

answered Oct 6, 2021 at 9:07

Alper Ebicoglu's user avatar

Alper EbicogluAlper Ebicoglu

8,9741 gold badge51 silver badges55 bronze badges

I’ve fixed this before my making sure there wasn’t extra whitespace in the name of the directory I was deleting. This is more of a concern when I had the directory name contained within a variable that I was passing to RD. If you’re specifying your directly in quotes then this isn’t helpful, but I hope that someone like me comes along with the same problem and sees this. RD /S /Q can work, as I noticed the issue started happening when I changed something in my batch script.

answered Jun 19, 2022 at 7:07

gallopinggoose6's user avatar

Программистам часто приходится работать в консоли — например, чтобы запустить тестирование проекта, закоммитить новый код на Github или отредактировать документ в vim. Всё это происходит так часто, что все основные действия с файлами становится быстрее и привычнее выполнять в консоли. Рассказываем и показываем основные команды, которые помогут ускорить работу в терминале под OS Windows.

Для начала нужно установить терминал или запустить командную строку, встроенную в Windows — для этого нажмите Win+R и введите cmd. Терминал часто встречается и прямо в редакторах кода, например, в Visual Studio Code.

Чтобы ввести команду в консоль, нужно напечатать её и нажать клавишу Enter.

Содержимое текущей папки — dir

Выводит список файлов и папок в текущей папке.

C:\content-server>dir
 Том в устройстве C имеет метку SYSTEM
 Серийный номер тома: 2C89-ED9D

 Содержимое папки C:\content-server

06.10.2020  00:41    <DIR>          .
06.10.2020  00:37    <DIR>          .circleci
16.07.2020  16:04               268 .editorconfig
16.07.2020  16:04                10 .eslintignore
16.07.2020  16:04               482 .eslintrc
06.10.2020  00:37    <DIR>          .github
16.07.2020  16:04                77 .gitignore
06.10.2020  00:41    <DIR>          assets
06.10.2020  00:41    <DIR>          gulp
16.07.2020  16:10               379 gulpfile.js
16.07.2020  16:10           296 320 package-lock.json
16.07.2020  16:10               751 package.json
16.07.2020  16:04               509 README.md

Открыть файл

Чтобы открыть файл в текущей папке, введите его полное имя с расширением. Например, blog.txt или setup.exe.

Перейти в другую папку — cd

Команда cd без аргументов выводит название текущей папки.

Перейти в папку внутри текущего каталога:

C:\content-server>cd assets
C:\content-server\assets>

Перейти на одну папку вверх:

C:\content-server\assets>cd ..
C:\content-server>

Перейти в папку на другом диске:

c:\content-server>cd /d d:/
d:\>

Чтобы просто изменить диск, введите c: или d:.

Создать папку — mkdir или md

Создаём пустую папку code внутри папки html:

d:\html>mkdir coded:\html>dir

 Содержимое папки d:\html

03.11.2020  19:23    <DIR>           .
03.11.2020  19:23    <DIR>           ..
03.11.2020  19:25    <DIR>           code
               0 файлов              0 байт
               3 папок  253 389 438 976 байт свободно

Создаём несколько пустых вложенных папок — для этого записываем их через косую черту:

d:\html>mkdir css\js
d:\html>dir
 Том в устройстве D имеет метку DATA
 Серийный номер тома: 0000-0000

 Содержимое папки d:\html

03.11.2020  19:23    <DIR>           .
03.11.2020  19:23    <DIR>           ..
03.11.2020  19:25    <DIR>           code
03.11.2020  19:29    <DIR>           css

Создаётся папка css, внутри которой находится папка js. Чтобы проверить это, используем команду tree. Она показывает дерево папок.

Удалить папку — rmdir или rd

Чтобы удалить конкретную папку в текущей, введите команду rmdir:

d:\html\css>rmdir js

При этом удалить можно только пустую папку. Если попытаться удалить папку, в которой что-то есть, увидим ошибку:

d:\html\css>d:\html>rmdir css
Папка не пуста.

Чтобы удалить дерево папок, используйте ключ /s. Тогда командная строка запросит подтверждение перед тем, как удалить всё.

d:\html>rmdir css /s
css, вы уверены [Y(да)/N(нет)]? y

Показать дерево папок — tree

В любом момент мы можем увидеть структуру папок. Для этого используется команда tree.

d:\html>tree
Структура папок тома DATA
Серийный номер тома: 0000-0000
D:.
├───code
└───css
    └───js

Если вы хотите посмотреть содержимое всего диска, введите tree в корне нужного диска. Получится красивая анимация, а если файлов много, то ещё и немного медитативная.

Удаление файла — del или erase

Команда для удаления одного или нескольких файлов.

d:\html>del blog.txt

Переименование файла — ren или rename

Последовательно вводим ren, старое и новое имя файла.

d:\html>dir
 Содержимое папки d:\html

03.11.2020  19:23    <DIR>            .
03.11.2020  19:23    <DIR>            ..
03.11.2020  19:59                 0 blag.txt

d:\html>ren blag.txt blog.txt

d:\html>dir
 Содержимое папки d:\html

03.11.2020  19:23    <DIR>            .
03.11.2020  19:23    <DIR>            ..
03.11.2020  19:59                 0 blog.txt

Команды одной строкой

Очистить консоль — cls.

Информация о системе — systeminfo.

d:\html>systeminfo

Имя узла:                         DESKTOP-6MHURG5
Название ОС:                      Майкрософт Windows 10 Pro
Версия ОС:                        10.0.20246 Н/Д построение 20246
Изготовитель ОС:                  Microsoft Corporation
Параметры ОС:                     Изолированная рабочая станция
Сборка ОС:                        Multiprocessor Free

Информация о сетевых настройках — ipconfig.

d:\html>ipconfig
Настройка протокола IP для Windows
Адаптер Ethernet Ethernet 2:

   Состояние среды. . . . . . . . : Среда передачи недоступна.
   DNS-суффикс подключения . . . . . :

Список запущенных процессов — tasklist.

c:\>tasklist

Имя образа                     PID Имя сессии          № сеанса       Память
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         8 КБ
System                           4 Services                   0     2 688 КБ
Secure System                   72 Services                   0    23 332 КБ
…

Справка по командам — help

Команда help без аргументов выводит список всех возможных команд. help вместе с именем команды выведет справку по этой команде.

d:\html>help tree
Графическое представление структуры папок или пути.

TREE [диск:][путь] [/F] [/A]

   /F   Вывод имён файлов в каждой папке.
   /A   Использовать символы ASCII вместо символов национальных алфавитов.

В этой статье приведены не все команды и не все их возможности, но вы всегда можете воспользоваться командой help и узнать о том, что ещё может командная строка.

👉🏻 Больше статей о фронтенде и работе в айти в телеграм-канале.

Подписаться

Материалы по теме

  • 10 горячих клавиш VS Code, которые ускорят вашу работу
  • Полезные команды для работы с Git
  • Полезные команды для работы с Node. js

«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

ТелеграмПодкастБесплатные учебники

  • Windows удаление файлов старше n дней
  • Windows удалить папку с содержимым cmd
  • Windows удаленное подключение через командную строку
  • Windows создать ярлык из командной строки
  • Windows удалить папку с подпапками