Rmdir удалить каталог


Содержание

Как удалить папку через командную строку

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

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

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

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

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

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

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

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

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

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

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

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

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

Команда rmdir для начинающих (с примерами)

Оригинал: Linux rmdir Command for Beginners (with Examples)
Автор: Himanshu Arora
Дата публикации: 9 февраля 2020 года
Перевод: А. Кривошей
Дата перевода: июль 2020 г.

Итак, мы уже обсуждали команду rm, которая в основном используется для удаления файлов и каталогов из командной строки Linux. Однако есть еще одна связанная с ней утилита командной строки, которая специально предназначена для удаления каталогов. Этой утилитой является rmdir, и в этом руководстве мы обсудим ее основы, используя несколько простых для понимания примеров.

Команда rmdir

Как следует из названия, команда rmdir ориентирована на удаление каталогов, впрочем только пустых. Ниже приводится ее синтаксис:

Вот как man-страница объясняет ее назначение:

Удаляет директорию(ии), если они пусты.

Следующие примеры в стиле вопрос/ответ должны дать вам представление о том, как работает эта утилита.

Q1. Как работает rmdir?

Это довольно просто — передайте имя каталога в качестве ввода команды. Например:

Q2. Как заставить rmdir игнорировать непустые каталоги.

По умолчанию команда rmdir выдает ошибку, если вы попытаетесь удалить непустой каталог. Однако, если вы хотите, вы можете отменить вывод ошибки, используя опцию —ignore-fail-on-non-empty.

Q3. Как заставить rmdir удалить родительский каталог?

Как и в случае с mkdir, вы также можете попросить rmdir выполнить ее работу в родительских каталогах. Это означает, что вы также можете сразу удалить родительские каталоги каталога. Эта функция доступна через опцию командной строки -p.

Например, следующая команда удалит каталоги «test» и «test-dir».

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

Q4. В чем разница между rmdir и rm -r?

Если вы помните, вы также можете удалить каталоги, используя команду rm, включив опцию -r. Так в чем разница между нею и rmdir? Ответ в том, что rmdir работает только в случае пустых каталогов — нет никакого способа, каким вы могли бы заставить rmdir удалить непустые каталоги.

Таким образом, rmdir полезна в в тех ситуациях, когда вам нужно проверить, пуст ли каталог, до его удаления.

Заключение

Как можно видеть, rmdir не является сложной для понимания и использования командой. Кроме того, она предлагает только несколько вариантов командной строки. Мы обсудили почти все их здесь. На всякий случай вам может понадобится man-страница для rmdir .

rmdir

(PHP 4, PHP 5, PHP 7)

rmdir — Удаляет директорию

Описание

Пытается удалить директорию с именем dirname . Директория должна быть пустой и должны иметься необходимые для этого права. При неудачном выполнении будет сгенерирована ошибка уровня E_WARNING .

Список параметров

Путь к директории.

Замечание: Поддержка контекста была добавлена в PHP 5.0.0. Для описания контекстов смотрите раздел Потоки.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования rmdir()

if (! is_dir ( ‘examples’ )) <
mkdir ( ‘examples’ );
>

Примечания

Замечание: Когда опция safe mode включена, PHP проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.

Смотрите также

  • is_dir() — Определяет, является ли имя файла директорией
  • mkdir() — Создаёт директорию
  • unlink() — Удаляет файл
Илон Маск рекомендует:  Урок 4. Условия существования электрического тока

User Contributed Notes 28 notes

Glob function doesn’t return the hidden files, therefore scandir can be more useful, when trying to delete recursively a tree.

public static function delTree ( $dir ) <
$files = array_diff ( scandir ( $dir ), array( ‘.’ , ‘..’ ));
foreach ( $files as $file ) <
( is_dir ( » $dir / $file » )) ? delTree ( » $dir / $file » ) : unlink ( » $dir / $file » );
>
return rmdir ( $dir );
>
?>

some implementations of recursive folder delete don’t work so well (some give warnings, other don’t delete hidden files etc).

this one is working fine:
function rrmdir ( $src ) <
$dir = opendir ( $src );
while( false !== ( $file = readdir ( $dir )) ) <
if (( $file != ‘.’ ) && ( $file != ‘..’ )) <
$full = $src . ‘/’ . $file ;
if ( is_dir ( $full ) ) <
rrmdir ( $full );
>
else <
unlink ( $full );
>
>
>
closedir ( $dir );
rmdir ( $src );
>

Never ever use jurchiks101 at gmail dot com code. It contains command injection vulnerability.
If you want to do it that way, use something like this instead:

if ( PHP_OS === ‘Windows’ )
<
exec ( sprintf ( «rd /s /q %s» , escapeshellarg ( $path )));
>
else
<
exec ( sprintf ( «rm -rf %s» , escapeshellarg ( $path )));
>
?>

Note the escapeshellarg usage to escape any possible unwanted character, this avoids putting commands in $path variable so the possibility of someone «pwning» the server with this code

Another simple way to recursively delete a directory that is not empty:

function rrmdir ( $dir ) <
if ( is_dir ( $dir )) <
$objects = scandir ( $dir );
foreach ( $objects as $object ) <
if ( $object != «.» && $object != «..» ) <
if ( filetype ( $dir . «/» . $object ) == «dir» ) rrmdir ( $dir . «/» . $object ); else unlink ( $dir . «/» . $object );
>
>
reset ( $objects );
rmdir ( $dir );
>
>
?>

itay at itgoldman’s function falls into an infinite loop if the $src directory doesn’t exist.
Here’s a fix — one should do at least a file_exists() check before the loop:


Thanks to itay for the original function, though, it was helpful.

Say, you’re working on Windows and continue to get a permission’s error without a reason. Then it may be that a different Windows program is working on the folder (see earlier notes also). In the case that you can’t find that program, the line

( opendir ( $dirname )); ?>

may solve the problem!
Make sure to write this before rmdir($dirname);.

I was working on some Dataoperation, and just wanted to share an OOP method with you.

It just removes any contents of a Directory but not the target Directory itself! Its really nice if you want to clean a BackupDirectory or Log.

Also you can test on it if something went wrong or if it just done its Work!

I have it in a FileHandler class for example, enjoy!

public function deleteContent ( $path ) <
try <
$iterator = new DirectoryIterator ( $path );
foreach ( $iterator as $fileinfo ) <
if( $fileinfo -> isDot ())continue;
if( $fileinfo -> isDir ()) <
if( deleteContent ( $fileinfo -> getPathname ()))
@ rmdir ( $fileinfo -> getPathname ());
>
if( $fileinfo -> isFile ()) <
@ unlink ( $fileinfo -> getPathname ());
>
>
> catch ( Exception $e ) <
// write log
return false ;
>
return true ;
>

This issue has been driving me nuts for hours.

I am running PHP on IIS, I had the wincache module installed, when running a recursive delete a certain folder would get «stuck» and throw permissions errors. I was not able to delete them with PHP or in windows itself. The only way to delete the folder was to wait 5 min and run the script again, or stop the IIS server and the folder would delete on its own. Disabling the wincachce module resolved the issue.

Hope this helps.

It is rather dangerous to recurse into symbolically linked directories. The delTree should be modified to check for links.

public static function delTree ( $dir ) <
$files = array_diff ( scandir ( $dir ), array( ‘.’ , ‘..’ ));
foreach ( $files as $file ) <
( is_dir ( » $dir / $file » ) && ! is_link ( $dir )) ? delTree ( » $dir / $file » ) : unlink ( » $dir / $file » );
>
return rmdir ( $dir );
>
?>

function unlinkDir($dir)
<
$dirs = array($dir);
$files = array() ;
for($i=0;;$i++)
<
if(isset($dirs[$i]))
$dir = $dirs[$i];
else
break ;

if($openDir = opendir($dir))
<
while($readDir = @readdir($openDir))
<
if($readDir != «.» && $readDir != «..»)
<

foreach($files as $file)
<
unlink($file) ;

>
$dirs = array_reverse($dirs) ;
foreach($dirs as $dir)
<
rmdir($dir) ;
>

//This is one example to delete full directory with all files inside there

function delDir($path) <
if(is_dir($path) == TRUE) <
$rootFolder = scandir($path);
if(sizeof($rootFolder) > 2) <
foreach($rootFolder as $folder) <
if($folder != «.» && $folder != «..»)<
//Pass the subfolder to function
delDir($path.»/».$folder);
>
>
//On the end of foreach the directory will be cleaned, and you will can use rmdir, to remove it
rmdir($path);
>
>else <
if(file_exists($path) == TRUE) <
unlink($path);
>
>
>

A patch to previous script to make sure rights for deletion is set:

//Delete folder function
function deleteDirectory ( $dir ) <
if (! file_exists ( $dir )) return true ;
if (! is_dir ( $dir ) || is_link ( $dir )) return unlink ( $dir );
foreach ( scandir ( $dir ) as $item ) <
if ( $item == ‘.’ || $item == ‘..’ ) continue;
if (! deleteDirectory ( $dir . «/» . $item )) <
chmod ( $dir . «/» . $item , 0777 );
if (! deleteDirectory ( $dir . «/» . $item )) return false ;
>;
>
return rmdir ( $dir );
>
?>

[EDITOR NOTE: «Credits to erkethan at free dot fr.» — thiago]

This isn’t my code, but just thought I would share, since it took me so long to find. This is a function to delete a folder, all sub-folders, and files in one clean move.

Just tell it what directory you want deleted, in relation to the page that this function is executed. Then set $empty = true if you want the folder just emptied, but not deleted. If you set $empty = false, or just simply leave it out, the given directory will be deleted, as well.

Илон Маск рекомендует:  Элемент button

function deleteAll ( $directory , $empty = false ) <
if( substr ( $directory ,- 1 ) == «/» ) <
$directory = substr ( $directory , 0 ,- 1 );
>

if(! file_exists ( $directory ) || ! is_dir ( $directory )) <
return false ;
> elseif(! is_readable ( $directory )) <
return false ;
> else <
$directoryHandle = opendir ( $directory );

if( is_dir ( $path )) <
deleteAll ( $path );
> else <
unlink ( $path );
>
>
>

if( $empty == false ) <
if(! rmdir ( $directory )) <
return false ;
>
>

Удаление директории в PHP

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

В PHP для этого предусмотрена функция rmdir(). В качестве аргумента она принимает путь до директории, которую Вы хотите удалить. Однако, директория должна быть пустая — это главное условие (если не считать того, что у пользователя, от которого работает веб-сервер, должны быть права на запись для директории). Если в директории будут размещены файлы, то мы получим ошибку при вызове функции. Соответственно, приходим к выводу, что директорию перед использованием функции rmdir() необходимо предварительно очистить.

В сети советуют написать функцию, которой в качестве аргумента будет передаваться путь к директории, которую нам необходимо удалить. В теле функции необходимо организовать листинг содержимого директории, в рамках которого осуществляется проверка — является ли файл директорией. Если файл является директорией, то по данному условию функция вызывает себя. Это необходимо для зачистки вложенных директорий, и это будет работать на всех уровнях вложенности. В ином случае, для файла применяется функция unlink() — она предназначена для удаления файла. За рамками данной проверки на последнем шаге мы удаляем директорию.

Пример реализации:

Какие проблемы у данного кода?

В простых случаях директория со всеми вложениями удалится. Но предположим, что в нашей директории присутствует скрытый файл, который начинается с точки, например, .htaccess. Функция glob() представляет из себя glob-подстановку UNIX, в которой по умолчанию не участвуют скрытые файлы (DOTFILES). Например, если мы зайдем в nix-терминал и будем использовать bash, то мы столкнемся с той же проблемой (речь именно о скрытых файлах в рамках glob). Для решения вопроса в bash существует команда shopt -s dotglob — она разрешает glob-подстановку скрытых файлов. В PHP же это можно решить добавлением дополнительно параметра GLOB_BRACE для glob() и расширением паттерна из первого параметра функции.

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

В итоге, функция обретает следующий вид:

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

В заключение хотелось бы отметить еще один быстрый способ. Корректность его использования весьма сомнительна — отправить команду на выполнение в SHELL.

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

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

CMD — командная строка как 2×2

Команда RD и RMDIR позволяют удалять как каталоги, так и дерево каталогов, то есть не только одного указанного каталога, но и всех подкаталогов которые содержаться в указанном пути.

Синтаксис команды RD | RMDIR
RD | RMDIR [ключи обработки] [диск/путь]

Ключи обработки.
/Q — Отключает запрос на подтверждения при удалении дерева каталогов.
/S — Удаление каталога со всеми вложенными в него подкаталогами.

Диск/путь.
Указываем путь каталога, который нужно удалить.

1. Удаляем каталог folder:
RD | RMDIR folder

2. Удаляем каталог folder с вложенными в него folder2 и folder3:
RD | RMDIR /s folder

При выполнении данной команды появляется запрос на удаление, что бы он не появился вместе с ключом /S используется ключ /Q
RD | RMDIR /s /q folder

3. Удаляем каталог с другого локального диска:
RD | RMDIR D:\folder

Как удалить папку через командную строку

Командная строка (сокращенно CMD) – специальная программа, позволяющая выполнять сложные операции в Виндовс. Рядовые пользователи ее не используют, поскольку потребность в большинстве функций реализуется через привычный оконный интерфейс. Но когда возникают проблемы посерьезнее, возможности командной строки могут пригодиться. Данная программа подойдет для принудительного удаления папок, файлов и работы с директориями и локальными дисками.

Суть работы проста – вводится команда или ряд последовательных команд (алгоритм), и Windows их выполняет. Причем многие процессы через CMD проходят гораздо быстрее, чем в знакомом графическом интерфейсе. Удаление папки или программы в командной строке вообще происходит в пару кликов.

Мы советуем с осторожностью обращаться с утилитой, поскольку она способна вносить изменения в работу самой ОС Виндовс. Невнимательное обращение в CMD может привести к дальнейшим ошибкам и неполадкам.

Как запустить командную строку от администратора в Windows 7?

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

Способ 1

В поиске «Пуска» введите «командная строка» или «cmd» (без кавычек). Система найдет утилиту, вам останется только ее открыть.

Если вы хотите более подробно узнать, как вызвать командную строку в Windows 8, а также рассмотреть 5 проверенных способов, вы можете прочитать статью об этом на нашем портале.

Способ 2

  1. Откройте приложение «Выполнить». Его название можно вбить в тот же поиск «Пуска».

На заметку! У некоторых пользователей он закреплен на панели справа (смотрите скриншот).

Примечание! CMD может запустить только администратор компьютера. Поскольку командная строка способна вносить серьезные изменения в работу системы, ОС Виндовс не доверяет ее запуск другим пользователям (с категориями прав «Гость» и «Обычный»).

Как удалить папку через командную строку


Шаг 1. Запускаем CMD.

Илон Маск рекомендует:  Размеры textarea

Шаг 2. Для удаления используется команда «rmdir» (rd) – удалить каталог файловой системы Windows можно только с ее помощью. Итак, вписываем текст «RD /?». Утилита ознакомит вас с функциями по работе с папками.

Шаг 3. Мы создали папку с ненужными файлами, чтобы продемонстрировать принцип работы утилиты. Папка расположена на рабочем столе. Когда вы удаляете папку, вы должны вписать следующую команду: «RD /s», затем поставить пробел и вбить путь к самой папке (ее адрес на компьютере).

Как найти путь к папке

Как узнать путь к папке? Вручную это делать слишком долго, особенно если вы хотите удалить несколько директорий. Рассмотрим наш рабочий стол. Он находится в папке «Users» («Пользователи») на том диске, где у вас установлена ОС Виндовс.

    В нашем случае система стоит на локальном диске C. Заходим в него.

rmdir — Удаляет директорию

(PHP 4, PHP 5, PHP 7)

rmdir — Удаляет директорию

Описание

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

Список параметров

Путь к директории.

Замечание: Поддержка контекста была добавлена в PHP 5.0.0. Для описания контекстов смотрите раздел Потоки.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
5.0.0 Начиная с версии PHP 5.0.0, функция rmdir() также может быть использована с некоторыми обёртками URL. Обратитесь к Поддерживаемые протоколы и обработчики (wrappers) для получения списка обёрток, которые поддерживают rmdir() .

Примеры

Пример #1 Пример использования rmdir()

if (! is_dir ( ‘examples’ )) <
mkdir ( ‘examples’ );
>

Примечания

Замечание: Когда опция safe mode включена, PHP проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.

Смотрите также

  • is_dir() — Определяет, является ли имя файла директорией
  • mkdir() — Создаёт директорию
  • unlink() — Удаляет файл

10.6. Удаление: rm и rmdir

10.6.1. rm

Команда rm(1) удаляет файлы и целые деревья каталогов. Пользователи DOS найдут её похожей на команды del и deltree. rm может быть очень опасной, если вы не следите за своими действиями. Хотя в некоторых случаях можно восстановить только что удалённый файл, это может оказаться слишком сложным процессом (и, возможно, дорогостоящим), и его рассмотрение выходит за рамки этой книги.

Чтобы удалить один файл, укажите его имя при запуске rm:

Если для файла отсутствуют права на запись, вы можете получить сообщение об ошибке с отказом в доступе. Чтобы принудительно удалить неважно какой файл, используйте опцию -f, например так:

Чтобы удалить целый каталог, используйте одновременно две опции -r и -f . Ниже представлен хороший пример, удаляющий всё содержимое на вашем жёстком диске. И вам наверняка не захочется его выполнить. А вот и сама команда:

Будьте осторожны при работе с rm. Вы можете “выстрелить себе в ногу”. У этой команды также есть различные опции, которые хорошо описаны на странице руководства.

10.6.2. rmdir

Команда rmdir(1) удаляет каталоги из файловой системы. Каталог должен быть пуст перед удалением. Синтаксис довольно прост:

В этом примере в текущем каталоге удаляется подкаталог hejaz:

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

В этом примере будет сделана попытка удаления каталога hejaz, находящегося в каталоге /tmp.

Вы также можете удалить каталог и все его родительские каталоги с помощью опции -p .

В этом примере будет сначала сделана попытка удаления каталога hejaz, находящегося в каталоге /tmp. Если попытка удастся, утилита попытается удалить /tmp. Работа rmdir будет продолжаться до тех пор, пока не возникнет ошибка или не будет удалено всё указанное дерево.

Rmdir удалить каталог

Чтобы полностью удалить файл, используйте команду rm («remove»). Укажите имя удаляемого файла в качестве аргумента.

Чтобы удалить файл `notes’ в текущем рабочем каталоге, используйте:

Чтобы удалить каталог со всеми подкаталогами и файлами в нем, используйте опцию `-R’ («recursive»). Например, для удаления каталога `waste’ вместе с его содержимым, наберите:

$ rm -R waste [Enter]

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

rmdir — Удаляет директорию

(PHP 4, PHP 5, PHP 7)

rmdir — Удаляет директорию

Описание

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

Список параметров

Путь к директории.

Замечание: Поддержка контекста была добавлена в PHP 5.0.0. Для описания контекстов смотрите раздел Потоки.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
5.0.0 Начиная с версии PHP 5.0.0, функция rmdir() также может быть использована с некоторыми обёртками URL. Обратитесь к Поддерживаемые протоколы и обработчики (wrappers) для получения списка обёрток, которые поддерживают rmdir() .

Примеры

Пример #1 Пример использования rmdir()

if (! is_dir ( ‘examples’ )) <
mkdir ( ‘examples’ );
>

Примечания

Замечание: Когда опция safe mode включена, PHP проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.

Смотрите также

  • is_dir() — Определяет, является ли имя файла директорией
  • mkdir() — Создаёт директорию
  • unlink() — Удаляет файл
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL