Как удалить каталог cmd через word

Некоторые папки и файлы невозможно удалить с помощью проводника Windows. К ним относятся файлы с длинными путями, именами или зарезервированными именами, такими как CON, AUX, COM1, COM2, COM3, COM4, ​​LPT1, LPT2,

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

Содержание

  • Прежде чем мы начнем

  • Как удалить файлы и папки с помощью командной строки

  • Как удалить файлы и папки с помощью Windows PowerShell

  • Удаление файлов и папок со сложными и длинными путями с помощью командной строки

  • Заключительные слова

Прежде чем мы начнем

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

Здесь самое важное, что нужно помнить, это синтаксис пути и имени файла/папки. При вводе имени файла обратите внимание, есть ли в нем пробел. Например, если в имени папки нет пробела, его можно записать как есть. Однако, если в нем есть пробел, его нужно будет записать в круглых скобках («»). Вот пример:

CLI naming syntax

Еще одна вещь, которую следует помнить, это то, что вы можете увидеть разные результаты при удалении уже пустых папок и папок, в которых есть содержимое. Сказав это, вам нужно будет использовать специальные параметры в команде, чтобы удалить содержимое из папки вместе с самой основной папкой. Это называется рекурсивным действием.

И последнее, что может пригодиться, — это возможность просматривать содержимое, доступное в текущем рабочем каталоге. Это особенно полезно, так как вы вводите правильное написание целевого файла или папки. Чтобы просмотреть содержимое текущего рабочего каталога в командной строке и PowerShell, введите Dir
.

dir

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

По умолчанию в Windows 10 встроено 2 интерфейса командной строки.
– Командная строка и Windows PowerShell. Оба они будут использоваться для «удаления» контента с компьютера.

Как удалить файлы и папки с помощью командной строки

Команда Del/Erase в cmd

Дел
и Стереть
команды в командной строке являются псевдонимами друг друга. Это означает, что оба выполняют одну и ту же функцию независимо от того, какой из них вы используете. Их можно использовать для удаления отдельных элементов (файлов) в текущем рабочем каталоге. Помните, что его нельзя использовать для удаления самих каталогов (папок).

Совет:
Используйте вкладку
Кнопка для автоматического заполнения путей и имен файлов/папок.

 Дел  Имя файла/папки Стереть  Имя файла/папки  

Заменить Имя файла/папки
с названием элемента, который вы хотите удалить. Вот пример удаления файлов из рабочего каталога:

del erase cmd

Если вы попытаетесь удалить элементы из папки, пустой или нет, вам будет предложено подтвердить действие, подобное приведенному ниже:

confirmation yes no

В таком случае вам нужно будет ввести Y
для да и N
чтобы не подтвердить. Если вы выберете «да», элементы непосредственно в папке будут удалены, но каталог (папка) останется. Однако подкаталоги внутри папки вообще не будут изменены.

 Дел /с "Последняя папка" 

Вот результат:

recursive del

Как вы можете видеть на изображении выше, нам пришлось ввести «y» дважды — по одному разу для каждой папки. при каждом подтверждении удалялось 2 текстовых файла, как мы заявляли ранее в этом примере. Однако, если мы используем проводник, мы все еще можем видеть, что оба каталога — «Конечная папка» и «Подпапка» — все еще существуют, но содержимое внутри них удалено.

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

 Del /s /q "Последняя папка" 

/q
показывает, что действие должно быть предпринято тихо
.

quiet del

Команда Rmdir /rd в cmd

Аналогично Del и Erase, rmdir
и рд
также являются псевдонимами друг для друга, что означает удаление каталога
. Эти команды используются для удаления всего каталога и подкаталогов (рекурсивно), включая их содержимое. Для этого используйте команду ниже:

 rmdir "Новая папка" 
rmdir cmd
directory is not empty

В этом случае нам нужно будет применить опцию рекурсивного удаления элементов, как мы сделали ранее с Del
команда.

 rmdir /s "Последняя папка" 
rmdir recursive

Конечно, это можно сделать и с помощью /q
вариант, чтобы вам не предлагалось подтверждение.

 rmdir /s /q "Последняя папка" 
rmdir recursive quiet

Удалить несколько файлов и папок

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

 Дел "Файл1.txt" "Файл3.txt" "Файл5.txt" 
del multiple files
 рд "Папка1" "Папка3" "Папка5" 
rd multiple folders

Вот сравнение до и после каталога, в котором были выполнены обе вышеуказанные команды:

before vs after

Вот пример удаления всех файлов .txt из нашего текущего рабочего каталога:

 Дел "*.txt" 
del asterisk

Удаление файлов и папок в любом каталоге

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

Просто введите полный путь к элементу, который вы хотите удалить, в скобках, и он будет удален, как в примере ниже:

different directory rmdir

Проверить наличие файла или папки, а затем удалить с помощью команды IF

Мы уже обсуждали, что вы можете просмотреть содержимое рабочего каталога, набрав Dir
в командной строке. Однако вы можете применить условие «если» в командной строке, чтобы удалить элемент, если он существует. Если этого не произойдет, меры не будут приняты. Вот как:

 если есть  File/FolderName  (rmdir /s/q  Имя файла/папки ) 

Заменить Имя файла/папки
в обоих местах с названием удаляемого элемента (и расширением, если применимо). Вот пример:
если существует Рабочий стол (rmdir /s/q Рабочий стол)

cmd if

Как удалить файлы и папки с помощью Windows PowerShell

Команды Windows PowerShell для удаления и удаления содержимого с вашего ПК очень похожи на команды командной строки с несколькими дополнительными псевдонимами. Общий функционал и логика одинаковы.

Здесь важно отметить, что в отличие от командной строки все команды можно использовать для обеих целей — удаления как отдельных файлов, так и полных каталогов. Мы просим вас быть осторожными при использовании PowerShell для удаления файлов и папок, так как сам каталог также удаляется.

Хорошо то, что вам не нужно указывать рекурсивное действие. Если в каталоге есть подкаталоги, PowerShell подтвердит, хотите ли вы продолжить удаление, которое также будет включать все дочерние объекты (подкаталоги).

Вот список всех команд/псевдонимов, которые можно использовать в PowerShell для удаления элемента:

  • Дел
  • Рм-дир
  • удалить-предмет
  • Стереть
  • Ри

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

PS all

Как видно выше, синтаксис всех псевдонимов одинаков. Вы можете использовать любую из приведенных ниже команд, чтобы удалить элемент с помощью PowerShell:

 Дел  Имя файла/папки Rm-dir  Имя файла/папки remove-item  File/FolderName Стереть  Имя файла/папки Rd  Имя файла/папки Ри  Имя файла/папки Rm  Имя файла/папки  

Удалить несколько файлов и папок

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

 Del "  Буква Диска:\Путь\ИмяЭлемента ", "  Буква Диска:\Путь\ИмяЭлемента 

Не забудьте добавить тип файла, если элемент не является каталогом (.txt, .png и т. д.), как мы сделали в примере ниже:

PS delete selective 1

Вы также можете использовать звездочку (*)
объединяется с типом файла или именем файла для выполнения массового удаления файлов с помощью Del
команду, как это делается в командной строке. Вот пример:

PS asterisk

Команда, показанная выше, удалит все файлы .txt в каталоге «Новая папка».

Удалить файлы и папки в любом каталоге

Вы также можете удалить элемент из другого каталога, как мы делали это в командной строке. Просто введите полный путь к элементу в PowerShell, как мы сделали ниже:

PS different location

Удаление файлов и папок со сложными и длинными путями с помощью командной строки

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

Используйте приведенную ниже команду, чтобы скопировать содержимое одной папки (которая пуста) в папку, которую нельзя удалить. Это также сделает папку назначения пустой, что сделает ее съемной.

 robocopy "D:\EmptyFolder" D:\FolderToRemove /MIR 

В этом сценарии EmptyFolder
— это исходная папка, которую мы намеренно оставили пустой, чтобы скопировать ее в целевую папку «FolderToRemove».

robocopy

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

Сообщите нам, какое решение сработало для вас, в разделе комментариев ниже.

Программистам часто приходится работать в консоли — например, для запуска приложения тестирования проекта, закоммитить новый код на Github
или отредактировать документ в vim. Всё это происходит так часто, что все основные действия с файлами становятся быстрее и привычнее выполняются в консоли. Рассказы и сообщения по основным направлениям, которые привлекли к работе в терминале под ОС 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 

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

 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
и узнать о том, что ещё может командная строка.

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

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


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

Do you want to delete a directory from Windows command prompt(CMD)? This post explains how to use the command rmdir
to delete folders and their contents. You can also find examples for each use case of folder deletion – empty folders, non empty folders, folders with white spaced names etc.

Delete folder from CMD

Run the command rmdir
on the folder.

 rmdir directoryname 
 C:>rmdir emptydir
C:> 

How to delete a non empty folder

The simple rmdir
does not work for folders having some content.

 C:>rmdir nonemptydir
The directory is not empty. 

Use /s
option to delete the folder contents along with the folder. This deletes all subfolders recursively.

 C:>rmdir /S nonemptydir
nonemptydir, Are you sure (Y/N)? y
C:> 

Force delete a folder without confirmation

To  force delete directory, without being asked for confirmation, we can use /Q switch.

 rmdir /Q /S nonemptydir 

We can also use ‘rd’
in place of ‘rmdir
‘. Both names refer to the same command. This command works on Windows 2000, Windows XP, Server 2003, Vista, Windows 7 and 10.

Deleting directory with white spaces in the name

Rmdir
can delete files with whitespaces in the name, you just need to wrap up the folder name in double quotes as shown in the below example.

 rmdir /Q /S "folder with spaces in the name" 

Delete contents of a directory but keep the directory

The usecase here is to delete all the contents of the directory but keep the parent directory so that we do not need to create it again. rmdir /Q /S
does not work here as it deletes the parent directory too. Rather the below commands should do the trick.

 forfiles /P directory_path /M * /C "cmd /c if @isdir==FALSE del @file"
forfiles /P directory_path /M * /C "cmd /c if @isdir==TRUE rmdir /S /Q @file" 

This works in 2 steps – the first command deletes all files, whereas the second one deletes all subdirectories.

Errors

To delete a directory, you should have appropriate access permissions on the directory. Otherwise rmdir throws ‘Access denied’ error.


Время чтение:



Сам не понял, как получилось. Старый ржавый лист железа, который когда-то служил крышей с играл мне по руке. Теперь на правой руке пальцы опухшие с порванными ранами и болит. Думаю, придётся ехать в больницу, так как раны гноятся, видимо из-за ржавчины!

Как удалить файл через cmd.exe

Для удаления файла или несколько файлов используется команда « DEL
» Команду « DEL
» можно применять в трёх вариантах. В зависимости от Ваших потребностей.

1)  Для удаления одного файла.

2)  Для удаления всех файлов с нужным расширением.

3)  Для удаления всех файлов, в определённой директории.

Обо всем по порядку. Для удаления одного файла введите команду:

файл cmd, cmd удалить файл

Файл с именем «test.txt» будет удалён после выполнения команды из корня диска «C:\»

Что бы удалить все файлы из нужной вам директории с определённым расширением, например «txt» следует ввести команду таким образом:

cmd удалить файл, файл cmd

В место имени файла нужно указать знак « *
» и через точку указать нужно расширение.

Для удаления всего, что находится в директории, делаем так:

файл cmd, cmd удалить файл

Из директории «directory» будут удалены все файлы. Как видим, прежде чем все удалится, нас просят подтвердить действия. Удалять или нет!

Что бы консоль не спрашивала, нужно удалять или нет стоит использовать ключ « /q
» получится так.

cmd удалить файл, файл cmd

Теперь консоль не будет задавать лишних вопросов и удалит все файлы сразу.

Для справки: Данную команду можно использовать со звёздочками «*» то есть можно писать так « del  C:\directory\*.*
» в таком случаи результат будет такой же, как и прежде. Все файлы будут удалены из директории « directory
»

Как удалить каталог через консоль.

Для удаления каталога имеется команда « RD
». Удалим ранее созданный каталог « directory
»

Как удалить каталог cmd

Каталог « directory
» будет удалён, только в том случаи, если он пуст. Но если каталог не пустой, и содержит другие файлы и папки удаления не произойдёт!

Что бы удалить каталог с файлами используется ключ « /
S
»

Как удалить каталог через CMD ключ S

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

На этом я закончу первую часть поста.

В следующей части:

  • Как переместить файл через консоль.
  • Как переименовать файл из консоли.
  • Как вывести содержимое файла в консоль.
  • Как записать в файл результат выполнения команды.
  • Как запустить файл из консоли.

Возможно, даже скорее всего напишу ещё больше и также я думаю что будет и третья

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

Удачи Вам! Буду рад видеть Вас в следующих постах!


Время чтение:


I would like to delete all files and subfolders in a batch file in Windows 7 and keep the top folder. Basically emptying the folder. What’s the command line instruction for that?

djsmiley2kStaysInside's user avatar

asked Aug 9, 2010 at 16:42

Tony_Henrich's user avatar

28 gold badges
86 silver badges
115 bronze badges

You can do this using del
and the /S
flag (to tell it to remove all files from all subdirectories):

 del /S C:\Path\to\directory\* 

Breakthrough's user avatar

10 gold badges
104 silver badges
149 bronze badges

answered Aug 9, 2010 at 16:46

MDMarra's user avatar

del * /S /Q

Here first it will clean all files in all sub-directories and then cleans all empty sub-directories.
Since current working directory is parent directory i.e.”\New folder”, rmdir command can’t delete this directory itself.

BlueBerry - Vignesh4303's user avatar

ответил 5 окт 2013 в 4:44

Annasaheb's user avatar

3 серебряных значка
2 бронзовых знака

Перейти к родительскому каталогу:

 pushd "Parent Directory" 

Удалить подпапки:

 rd /s /q . 2>nul 

Hashim Aziz's user avatar

34 золотых знака
98 серебряных значков
165 бронзовых знаков

ответил 3 июля 2014 в 12:38

user340956's user avatar

2 серебряных значка
2 бронзовых знака

 rmdir "c:\pathofyourdirectory" /q /s 

Не забудьте поставить кавычки и вместо /q /s
он удалит все репозитории и без запроса.

Excellll's user avatar

11 золотых значков
51 серебряный значок
78 бронзовых знаков

ответил 31 июля 2013 в 18:23

SuperUser's user avatar

1 серебряный значок
1 бронзовый значок

Вы можете сделать это быстро и легко, поместив эти три инструкции в свой bat-файл:

 mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder 

ответил 2 фев 2017 в 19:20

fireblood's user avatar

2 золотых значка
5 серебряных значков
14 бронзовых знаков

Для ясности, rd /s /q c:\foobar
удаляет целевой каталог в дополнение к его содержимому, но вы не всегда хотите удалять сам каталог, иногда вы просто хотите удалить его содержимое и оставить каталог в покое. deltree
команда могла это сделать, но Micrsoft в своей бесконечной «мудрости» удалил команду и не перенес ее в Windows.

dt.bat
(или dt.cmd
для детей; что угодно, я стар, я использую .bat
🤷):

 :: dt is a Windows-compatible version of the deltree command
:: Posted to SuperUser by Synetech: https://superuser.com/a/1526232/3279
@echo off
goto start
:start if ["%~1"]==[""] goto usage pushd "%~1" 2>nul if /i not ["%cd%"]==["%~1"] goto wrongdir rd /s /q "%~1" 2>nul popd
goto :eof
:usage echo Delete all of the contents of a directory echo. echo ^> %0 DIR echo. echo %0 is a substitute for deltree, it recursively deletes the contents echo (files and folders) of a directory, but not the directory itself echo. echo DIR is the directory whose contents are to be deleted
goto :eof
:wrongdir echo Could not change to the target directory. Invalid directory? Access denied?
goto :eof 

Вот как это работает:

  1. Проверяет, был ли передан аргумент командной строки, печатает информацию об использовании и завершает работу, если нет.
  2. Используется pushd
    чтобы сохранить текущий каталог, затем переключитесь на целевой каталог, перенаправив все ошибки на nul
    для более удобной работы с командной строкой (и более чистых журналов).
  3. Он проверяет, совпадает ли текущий каталог с целевым каталогом, печатает сообщение об ошибке и завершает работу, если это не так. Это позволяет избежать случайного удаления содержимого предыдущего каталога, если pushd
    команда не удалась (например, передача недопустимого каталога, ошибка доступа и т. д.)

    • Эта проверка нечувствительна к регистру, поэтому обычно
      безопасно в Windows, но не для любых файловых систем, чувствительных к регистру, таких как те, которые используются в системах * nix, даже под Windows.
    • Не работает с короткими именами файлов (например, C:\Users\Bob Bobson\foobar
      не будет считаться таким же, как C:\Users\BobBob~1\foobar
      даже если они есть на самом деле). Использование некоротких имен файлов вызывает небольшое неудобство, но лучше перестраховаться, чем потом сожалеть, тем более что SFN не всегда надежны и не всегда предсказуемы (и даже могут быть вообще отключены).
  4. Затем используется rd
    удалить целевой каталог и все его содержимое, перенаправляя любые ошибки (которых должно быть хотя бы одно для самого каталога) на nul
    . Некоторые примечания по этому поводу:

    • Поскольку целевой каталог является текущим каталогом, система имеет для него открытый дескриптор файла, и, следовательно, она не может фактически удалить его, поэтому он остается как есть, что является желаемым поведением.
    • Поскольку он не пытается удалить целевой каталог до тех пор, пока его содержимое не будет удалено, теперь он должен быть пустым (кроме всего, что также имеет дескрипторы открытых файлов).
  5. Наконец, используется popd
    чтобы вернуться в предыдущий текущий каталог и завершить скрипт.

(Если хотите, вы можете прокомментировать сценарий с приведенными выше описаниями, используя rem
или ::
.)

ответил 17 фев 2020 в 22:41

Synetech's user avatar

36 золотых значков
223 серебряных значка
356 бронзовых знаков

вы можете использовать rmdir для удаления файлов и подпапок, например:

 rmdir /s/q MyFolderPath 

Однако это значительно быстрее, особенно когда в вашей структуре много подпапок, чтобы использовать del перед rmdir, например:

 del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath 

ответил 27 апр 2015 в 7:21

Einbert Alshtein's user avatar

Если вы хотите удалить все файлы в папке, включая все подпапки, и не полагаться на некоторые условия ошибки, чтобы сохранить корневую папку неповрежденной (как я видел в другом ответе)
у вас может быть вот такой командный файл:

 @echo off
REM Checking for command line parameter
if "%~1"=="" ( echo Parameter required. exit /b 1
) else ( REM Change directory and keep track of the previous one pushd "%~1" if errorlevel 1 ( REM The directory passed from command line is not valid, stop here. exit /b %errorlevel% ) else ( REM First we delete all files, including the ones in the subdirs, without confirmation del * /S /Q REM Then we delete all the empty subdirs that were left behind for /f %%D IN ('dir /b /s /a:d "%~1"') DO rmdir /S /Q "%%D" REM Change directory back to the previous one popd REM All good. exit /b 0 )
) 

И тогда вы бы просто назвали это с помощью:

 empty_my_folder.bat "C:\whatever\is\my folder" 

ответил 5 фев 2014 в 16:39

Gio's user avatar

Чтобы удалить файл:

 del PATH_TO_FILE 

Чтобы удалить папку со всеми файлами в ней:

 rmdir /s /q PATH_TO_FOLDER 

Удалить все файлы из определенной папки (не удаляя саму папку) немного сложно. del /s *.*
не может удалять папки, но удаляет файлы из всех подпапок. Итак, необходимы две команды:

 del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i" 

Вы можете создать скрипт для удаления всего, что вы хотите (папку или файл) вот так mydel.bat
:

 @echo off
setlocal enableextensions
if "%~1"=="" ( echo Usage: %0 path exit /b 1
)
:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1
:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL% 

Несколько примеров использования:

 mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder 

ответил 10 ноя 2016 в 17:16

Maxim Suslov's user avatar

Для удаления всех подкаталогов и их содержимого используйте robocopy. Создайте пустой каталог, например C:\Empty. Допустим, вы хотите очистить C:\test, в котором много подкаталогов и файлов, а также подкаталогов и файлов:
robocopy c:\empty c:\test /purge
затем rd C:\test, если это необходимо.

ответил 18 мая 2021 в 9:31

David Walker's user avatar

Это работало лучше для меня, когда у меня были пробелы в именах папок.


  • ответил

    13 фев 2014 в 18:06 deltree

    mkdir empty_folder
    robocopy /mir empty_folder "path_to_directory"
    rmdir empty_folder

      nul

        rd

      Если вы хотите очистить папку, я возьму

    1. popd

      Вот как просто!
      Надеюсь, я помог вам!
      Я рекомендую вам взять весь код, если вы не хотите брать весь код, вы можете упростить это с помощью.

       

      rmdir "c:\pathofyourdirectory" /q /s

      /q /s

      РЕДАКТИРОВАТЬ:
      rmdir не будет работать, если он не пуст. Чтобы исправить это.

      Excellll's user avatar


      ответил 30 июля 2020 в 8:56

      SuperUser's user avatar

      О чем просил ОП

      Это удалит все файлы и папки, включая каталог

       но переделывает верхний каталог в конце. 

      Чего хотят большинство людей


      Это полностью удалит

      и все его содержимое

      ответил
      22 января 2021 в 8:03

      fireblood's user avatar




      Ни один из ответов, уже опубликованных здесь, не очень хорош, поэтому я добавлю свой собственный ответ.

      rd /s /q c:\foobar

      dt.bat Это должно сработать. dt.cmd

      .bat
      ответил 22 января 2021 в 14:28 :: dt is a Windows-compatible version of the deltree command
      :: Posted to SuperUser by Synetech: https://superuser.com/a/1526232/3279

      @echo off
      goto start

      :start
      if ["%~1"]==[""] goto usage
      pushd "%~1" 2>nul
      if /i not ["%cd%"]==["%~1"] goto wrongdir
      rd /s /q "%~1" 2>nul
      popd
      goto :eof

      :usage
      echo Delete all of the contents of a directory
      echo.
      echo ^> %0 DIR
      echo.
      echo %0 is a substitute for deltree, it recursively deletes the contents
      echo (files and folders) of a directory, but not the directory itself
      echo.
      echo DIR is the directory whose contents are to be deleted
      goto :eof

      :wrongdir
      echo Could not change to the target directory. Invalid directory? Access denied?
      goto :eof

       

    2. nul Ξένη Γήινος
    3. pushd
6 золотых значков
  • 27 серебряных значков 62 бронзовых знака
  • pushd
  • Кажется, все упускают из виду тот факт, что мы хотим удалить несколько подпапок, но НЕ удаляем родительскую папку. Мы также можем не знать всех названий подпапок и не хотим делать это по отдельности. C:\Users\Bob Bobson\foobar C:\Users\BobBob~1\foobar Итак, нестандартно думая, вот как я решил эту проблему.

    Robocopy /Purge c:\EmptyFolderToBeDeletedSoon c:\FolderIWantEmpty

    Создайте пустой временный каталог. Используйте команду RoboCopy с переключателем /Purge (/PURGE :: удалить целевые файлы/каталоги, которые больше не существуют в источнике.), используя пустую папку в качестве источника и папку, которую мы хотим очистить, в качестве места назначения. Удалите пустую временную папку, которую мы создали как пустой источник для Robocopy.

    Теперь у вас есть пустая папка со всеми файлами и папками, о чем и была вся эта строка.

    ответил 15 авг 2022 в 20:07

    Vokard's user avatar

    Вот что мне помогло.

    1. Перейдите в папку, из которой вы хотите удалить файлы.
    2. Тип: del *
    3. Y для да.
    4. Готово

    Glorfindel's user avatar

    8 золотых значков 24 серебряных значка 37 бронзовых знаков

    ответил 7 мая 2018 в 18:43

    Erv's user avatar

    Пример: удалить все (папки/подпапки/файлы) в папке 3D Objects, но оставить только папку 3D Objects

    Когда CMD ориентирован на рабочий каталог, использование RMDIR удалит все папки, подпапки и файлы из рабочего каталога. Похоже, что процесс CMD не может обрабатывать себя так же, как «Я не могу броситься в мусорное ведро, потому что мусорное ведро должно быть кем-то опечатано»

    ответил 1 окт 2020 в 13:36

    Mashimaro's user avatar

    Вот двухстрочное решение, которое я только что придумал, возможно, используя ошибку или неожиданное поведение в robocopy. Это работает с новейшей версией cmd и robocopy на Windows 10 на момент написания этой статьи.

    Это зеркало синхронизирует пустую подпапку с родительской папкой. Другими словами, в родительской папке должны быть все те же файлы, что и в подпапке: нет. Забавно, это означает, что он также удаляет пустую подпапку, с которой ему указано синхронизироваться.

     mkdir %TEMP%\i_like_cheez
    robocopy /mir %TEMP%\i_like_cheez %TEMP% 

    ответил 30 января 2021 в 1:44

    r_alex_hall's user avatar

    3 серебряных значка
    12 бронзовых знаков

    этот скрипт работает с папками с пробелом в названии

    for /f "tokens=*" %%i in ('dir /b /s /a:d "%~1"') do rd /S /Q "%%~i"

    ответил 20 фев 2021 в 22:40

    rubafix's user avatar

    спросил 23 авг 2010 в 19:29

    Eric Wilson's user avatar

    Эрик Уилсон

    12 золотых значков
    41 серебряный значок
    50 бронзовых знаков

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

    dt.bat Это удаляет каталог

      , с подсказками :


      То же самое, но без подсказок:



      ответил

      23 августа 2010 в 19:30 SuperUser's user avatar



       Колин Пикард 

      mkdir empty_folder
      robocopy /mir empty_folder "path_to_directory"
      rmdir empty_folder

      3 золотых значка
      31 серебряный значок

      38 бронзовых знаков

      fireblood's user avatar

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


      ответил 9 августа 2012 в 23:13

      rd /s /q c:\foobar

      deltree

      dt.cmd

       6 серебряных значков 

      :: dt is a Windows-compatible version of the deltree command
      :: Posted to SuperUser by Synetech: https://superuser.com/a/1526232/3279

      @echo off
      goto start

      :start
      if ["%~1"]==[""] goto usage
      pushd "%~1" 2>nul
      if /i not ["%cd%"]==["%~1"] goto wrongdir
      rd /s /q "%~1" 2>nul
      popd
      goto :eof

      :usage
      echo Delete all of the contents of a directory
      echo.
      echo ^> %0 DIR
      echo.
      echo %0 is a substitute for deltree, it recursively deletes the contents
      echo (files and folders) of a directory, but not the directory itself
      echo.
      echo DIR is the directory whose contents are to be deleted
      goto :eof

      :wrongdir
      echo Could not change to the target directory. Invalid directory? Access denied?
      goto :eof
      3 бронзовых знака

      .bat

      1. ответил
      2. 22 августа 2015 в 16:51 pushd

      3. nul

        • pushd

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

        • C:\Users\Bob Bobson\foobar Можно добавить

        • отключить подтверждение. Мне так и не удалось получить
        • работает (на XP) C:\Users\BobBob~1\foobar

          rd
          ответил

      17 мая 2014 в 7:42

    • nul

    • popd

    • Если у вас очень-очень длинный путь (как у меня из-за ошибки 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 

      Eric Wilson's user avatar

      12 золотых значков
      41 серебряный значок
      50 бронзовых знаков

      ответил 5 марта 2014 в 8:37

      Paulmann's user avatar

      1 серебряный значок
      1 бронзовый значок

      Из CMD Просто беги RD /s C:\path\to\delete

      Хит Y
      к подсказке

      /s
      гарантирует, что все подкаталоги также будут удалены.

      • Бежать help RD
        из командной строки

      Wasif's user avatar

      2 золотых значка
      19 серебряных значков
      32 бронзовых знака

      ответил 22 января 2016 в 6:44

      Rachit Ranjan's user avatar

       Remove-Item "Path" -Force -Recurse 

      Короче говоря (почти rm -rf
      ):

       rm "PATH" -r -fo 

      ответил 25 сен 2020 в 2:10

      Wasif's user avatar

      2 золотых значка
      19 серебряных значков
      32 бронзовых знака

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

       rd /s /q "C:\Users\gourav.g\AppData\Roaming\my folder" 

      ответил 4 июля 2018 в 7:09

      GorvGoyl's user avatar

      1 серебряный значок
      13 бронзовых знаков

      На моем компьютере с Windows 7 есть каталог, в котором есть сотни, если не тысячи подкаталогов. У кого-то есть файлы, у кого-то нет. Я хочу удалить все пустые каталоги.

      Глядя на DOS-команды del и rmdir, не похоже, что вы можете сделать это рекурсивно, не удаляя все файлы. Есть ли способ сделать это из командной строки?

      Hennes's user avatar

      7 золотых значков
      111 серебряных значков
      168 бронзовых знаков

      спросил 11 сен 2009 в 13:38

      mohlsen's user avatar

      Вы можете использовать Удалить пустые каталоги
      полезность.

      В качестве альтернативы вы можете использовать этот однострочный командный файл (из DownloadSquad
      ):

      (если используется внутри командного файла, замените nul
      с

    • )

    • Это работает, потому что
      не удалит каталог, содержащий файлы.

      SuperUser's user avatar

      15 золотых значков
      50 серебряных значков

       89 бронзовых знаков 

      mkdir empty_folder
      robocopy /mir empty_folder "path_to_directory"
      rmdir empty_folder

      ответил

      11 сентября 2009 в 13:44

      fireblood's user avatar

      5 золотых значков
      50 серебряных значков
      62 бронзовых знака

      Вы также можете использовать ROBOCOPY. Это очень просто, и его также можно использовать для удаления пустых папок внутри большой иерархии. rd /s /q c:\foobar

      deltree

      dt.bat Здесь и источник, и пункт назначения .bat
      , так как вам нужно только удалить пустые папки, а не перемещать другие файлы в другую папку.

       вариант - пропустить копирование (перемещение, в приведенном выше случае) пустых папок. Это также быстрее, поскольку файлы перемещаются внутри одного и того же диска. dt.cmd :: dt is a Windows-compatible version of the deltree command
      :: Posted to SuperUser by Synetech: https://superuser.com/a/1526232/3279
      @echo off
      goto start
      :start if ["%~1"]==[""] goto usage pushd "%~1" 2>nul if /i not ["%cd%"]==["%~1"] goto wrongdir rd /s /q "%~1" 2>nul popd
      goto :eof
      :usage echo Delete all of the contents of a directory echo. echo ^> %0 DIR echo. echo %0 is a substitute for deltree, it recursively deletes the contents echo (files and folders) of a directory, but not the directory itself echo. echo DIR is the directory whose contents are to be deleted
      goto :eof
      :wrongdir echo Could not change to the target directory. Invalid directory? Access denied?
      goto :eof ответил 

      13 сен 2015 в 10:25

    • pushd
    • Поскольку Cygwin поставляется с GNU find, вы можете сделать это:
    • pushd
      • Или чтобы избежать шума, когда папка больше не существует:
      • C:\Users\Bob Bobson\foobar
      • rd nul
      • C:\Users\BobBob~1\foobar
        • 15 золотых значков
        • 57 серебряных значков
        • 68 бронзовых знаков popd

        ответил 31 декабря 2009 в 22:52

        Начните с папки, из которой вы хотите удалить пустые папки.

        /d - будет работать с папками, а не с файлами /r - рекурсивно подкаталоги

        ответил 2 сен 2018 в 23:41

        Daniel Mošmondor's user avatar

        Бесплатная утилита EmptyFolderNuker делает это нормально, из базовой папки по вашему выбору. Он также удаляет те каталоги, которые содержат только пустые подкаталоги.

        ответил 11 сен 2009 в 16:08

        Rob Kam's user avatar

        Роб Кам

        2 золотых значка 20 серебряных значков 29 бронзовых знаков

        Если у вас Cygwin установлен, вы можете сделать это:

         find -type d -exec rmdir {} \; 

        ответил 11 сен 2009 в 21:50

        Anthony Giorgio's user avatar

         (defun *-delete-empty-directories (root-directory) "Recursively delete empty directories in ROOT-DIRECTORY.
        When called from dired, `dired-current-directory' is used for
        ROOT-DIRECTORY." ;; Interface (interactive (list (if (eq major-mode 'dired-mode) (expand-file-name (dired-current-directory)) (read-from-minibuffer "Root directory: ")))) (when (or (null root-directory) (string= "" root-directory)) (user-error "No root directory provided")) (when (called-interactively-p 'interactive) (unless (yes-or-no-p (format "Delete all non-empty directories in `%s'? " root-directory)) (user-error "Directory `%s' has been left untouched" root-directory))) ;; Implementation (require 'f) (let ((entries (f-directories root-directory))) (while entries (let ((curdir (car entries))) (when (f-directories curdir) (*-delete-empty-directories curdir)) (unless (f-entries curdir) (delete-directory curdir) (message "Directory deleted: `%s'" curdir)) (setq entries (cdr entries))))) 

        ответил 6 мая 2015 в 14:57

        Sean Allred's user avatar

        Шон Оллред

        2 золотых значка
        11 серебряных значков
        32 бронзовых знака

         find . -depth -type d -empty -execdir rmdir {} + 
         $find . -depth -type d -empty | while read dir; do (rmdir -v $dir); done 

        Я не использую xargs, потому что он имеет ограничение на входную строку (около 1024 строк, я думаю?), тогда как

          while read x; do (command $x); done 

        просто продолжает работать до тех пор, пока есть ввод. Не используйте флаг '-v', если вы не хотите видеть результаты и/или хотите, чтобы он работал быстрее.

        ответил 3 апр 2017 в 9:20

        skeetastax's user avatar

        2 серебряных значка
        6 бронзовых знаков

         EmptyDirectoriesRemove.cmd 
         @setlocal enableextensions enabledelayedexpansion
        :walk_tree
        for /D %%d in (*) do (
        cd %%d
        @CALL :walk_tree %%d
        cd ..
        rd %%d
        )
        endlocal 

        Использование: Перейдите в каталог верхнего уровня, который вы хотите очистить. В командной строке запустите:

        Предупреждения будут отображаться для непустых каталогов.

        Обычные предупреждения: Используйте на свой страх и риск. Резервное копирование перед тестированием. и т.д.

        ответил 13 декабря 2019 в 4:09

        James John McGuire 'Jahmic''s user avatar

        Оболочка 4NT (в настоящее время Take Command) имеет параметр /sx для "DEL". /S является рекурсивным, добавленный X удаляет пустые каталоги.

        ответ дан 10 янв. 2020 в 8:31

        Marco van de Voort's user avatar

        Вы можете использовать Powershell:

         Get-ChildItem "Path" -recurse | Where-Object {($_.PSIsContainer -eq $true) -and ((gci $_.fullName).count -eq 0)} | Remove-Item -Force 

        ответил 16 сен 2020 в 9:23

        Wasif's user avatar

        2 золотых значка
        19 серебряных значков
        32 бронзовых знака

        Вы можете использовать vbscript для этого:

         ' Save in deleteEmptyFolders.vbs
        ' call with:
        ' cscript deleteEmptyFolders.vbs C:\RootFolder
        If WScript.Arguments.Count > 0 Then directory = WScript.Arguments.Item(0) WSH.Echo("Deleting empty folders starting from " & directory)
        Else WSH.Echo "Please supply a directory as an argument" WSH.Quit
        End If
        Set ofso = CreateObject("Scripting.FileSystemObject")
        Set rootFolder = ofso.GetFolder(directory)
        Sub DeleteEmptySubfoldersIn(folder) For Each subfolder in folder.SubFolders On Error Resume Next '' VBScript TRY ' The script can error out if you don't have permissions to delete ' the subfolder DeleteEmptySubfoldersIn subfolder Next ''WScript.Echo folder.Path If folder.Files.Count = 0 And folder.SubFolders.Count = 0 Then 'TEST: print what you'll delete WScript.Echo "Was going to delete " & folder.Path & " b/c it's EMPTY" 'DISARMED uncomment line below to make it work '''''ofso.DeleteFolder folder End If
        End Sub
        DeleteEmptySubfoldersIn rootFolder 

        ответил 15 марта 2022 в 14:03

        bobobobo's user avatar

        8 золотых значков
        46 серебряных значков

        popd 61 бронзовый знак

        :/>  Windows 10 тормозит: причины медленной работы компьютера или ноутбука, способы решения проблемы