Bat как удалить папку с файлами

Обновлено: 30.07.2024

Скажем, есть переменная с именем %pathtofolder% , которая проясняет, что это полный путь к папке.

Я хочу удалить все файлы и подпапки в этом каталоге, но не сам каталог.

Но может быть ошибка типа «этот файл / папка уже используется» . когда это происходит, нужно просто продолжить и пропустить этот файл / папку.

Есть ли какая-то команда для этого?

Это безумие, как трудно Windows удалить папки . Или создать папку, начинающуюся с точки . Слава богу за интеграцию Bash в Windows! rm -rf path\to\folder работает в Windows 10 (или может прийти из Git Bash . в любом случае, если у вас есть, что стоит попробовать!)

Вы можете использовать этот скрипт для очистки папки и файлов в C:\Temp исходном коде :

Создайте пакетный файл (скажем, delete.bat), содержащий указанную выше команду. Перейдите в папку, в которой находится файл delete.bat, а затем выполните команду: delete.bat

Я пробовал, но, к сожалению, файлы, которые не были удалены, удаляются только подпапки. Например, у меня есть папка с именем Test. Он содержит 2 папки с именами «Ripon» и «Wasim» и содержит файл с именем «riponalwasim.txt». Подпапки Ripon и Wasim были удалены, но riponalwasim.txt не был удален. Используйте одиночный знак процента, если вы хотите работать напрямую из командной строки, например %p Грустно, что это занимает 2 строки, но, по крайней мере, это работает! Я устал искать работающий «однострочник» и пойду с этим, спасибо! Вы можете использовать оператор «&&» для выполнения двух команд в одной строке без файла bat (обратите внимание на один «%» вместо «%%»). del / s / q "myfolder *" && FOR / D% p IN ("myfolder *") DO rmdir "% p" / s / q <for / F "delims =" %% i in ('dir / b / a-d') do (echo del "%% i" / q)> может помочь для файлов (просто удалите это эхо)

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

Это автоматически удаляет папку и все файлы и подпапки.

Похоже, это удаляет путь к каталогу, который ОП хотел сохранить. Это приведет к удалению самой папки, поэтому вам нужно добавить еще одну команду: md FOLDERNAME (см. Ответ от @rakoczyn ниже). Что вы подразумеваете под «резервное копирование создано» здесь? Я не вижу ничего, что могло бы создать какую-либо резервную копию . Чтобы не удалять саму папку, сделайте ее текущей папкой, а затем используйте «.» как FOLDERNAME. Повторное создание этого впоследствии не обязательно то же самое, потому что ACL могли быть потеряны. cd "FOLDERNAME" RD . /S /Q

Самое простое решение, которое я могу придумать, - это удалить весь каталог с помощью

Затем создайте этот каталог снова:

Что делать, если у вас есть разрешение на удаление, но не создание новых папок? Я надеюсь, что это возможно :) Это плохое решение, так как оно приводит к гонке в файловой системе за узел каталога, то есть вторая команда может потерпеть неудачу, если выполняется сразу после нее. Кроме того , плохое решение , если каталог имеет специальные разрешения , которые вы просто Nuked гм (упс) Не откладывайте на ответ: «Каталог не пустой». Просто дважды введите команду :-) RD и RMDIR - это одна и та же команда, и, поскольку вы опубликовали этот ответ через 9 месяцев после того, как кто-то дал тот же ответ, почему люди дают вам очки?

Это удалит папки и файлы и оставит папку позади.

Для тех, кто не уверен в этом подходе: он определенно не создает каталог заново. Без 2>nul него выводится «Процесс не может получить доступ к файлу, потому что он используется другим процессом». Я ненавижу, что Windows не может удалить файлы и папки, используемые какой-либо программой. И мне нравится, что вы использовали это в свою пользу в этой строчке. Так что это убер-магия, как мы очищаем папку в Windows ?? Впечатляет :) @mlvljr Только если вы хотите сохранить родительскую папку тоже. RD /? покажет вам простой способ очистить папку. Это хорошо, если вам нужно вернуться на исходную позицию, иначе просто CD mypath && RD /S . будет достаточно. Мне не нравится, что вам приходится повторять свой путь дважды, хотя для длинных путей его становится трудно читать. Так что я бы просто добавил set p="mypath" в начале.

. удаляет все файлы и папки в данном каталоге, но не сам каталог.

это должен быть правильный ответ .. просто сделайте простой .. deletemyfoldercontents.bat файл .. вставьте ваш путь, и он работает как шарм .. В командной строке DEL также отсутствует опция /A для удаления файлов со скрытым набором атрибутов, и %dir%\* их следует заключать в двойные кавычки, как, например, "%dir%\*" для каталогов, содержащих пробел или один из этих символов &()[]<>^=;!'+,`

. И командную строку FOR следует изменить на, for /F "eol=| delims=" %%I in ('dir "%dir%\*" /AD /B 2^>nul') do rd /Q /S "%dir%\%%I" поскольку FOR игнорирует каталоги со скрытым набором атрибутов. DIR с параметрами /AD /B выводит все каталоги только с их именами. Кстати, dir это не хорошее название для переменной среды.

@RMiranda, в моих тестах, он делает именно так, как просил ОП. У вас есть случай, когда он не удаляет подпапки? Отвечает ли этот ответ требованию «может быть ошибка типа« этот файл / папка уже используется ». когда это происходит, он должен просто продолжить и пропустить этот файл / папку». ?

Обновление :

Из этого полезного комментария (спасибо Moritz Both ) вы можете добавить && между ними, поэтому RMDIR не запустите, если CD команда не будет выполнена (например, имя каталога с ошибкой):

/ S: удаляет дерево каталогов (указанный каталог и все его подкаталоги, включая все файлы).

/ Q: Указывает тихий режим. Не запрашивает подтверждения при удалении дерева каталогов. (Обратите внимание, что / q работает, только если указан / s.)

Это идеально подходит для очистки temp, но это cd [Your_Folder] очень важно - я должен помнить об этом, чтобы не удалять сам каталог . Это правильное решение. Добавьте && между командами вместо разрыва строки, и вы в безопасности от сбой CD. Это простое и правильное решение. Даже работает с командной оболочкой Azure! довольно плохое решение . Мне, например, нужно это удаление командной строки для обновления SVN - я хочу удалить все файлы и папки, прежде чем я сделаю обновление SVN, потому что могут быть некоторые изменения на машине, где я использую это, но актуально только проверенные в пунктах. Делать RMDIR / S / Q. также удаляет ссылку SVN и, следовательно, больше не делает папку svn

RD расшифровывается как REMOVE Directory.

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

/ Q: Тихо - не отображать подтверждение YN

проголосовал за то, что был единственным, кто объяснил, что /S и что /Q значит Номер rd эквивалентен rmdir и удалит сам каталог, а не тот, который хочет OP. Отвечает ли этот ответ требованию «может быть ошибка типа« этот файл / папка уже используется ». когда это происходит, он должен просто продолжить и пропустить этот файл / папку.»? Например, прерывается ли он полностью вместо продолжения?

Я использую Powershell

Он удалит содержимое папки, а не саму папку.

Ответ rhellem недавно, но это единственный ответ, который действительно сделает это для меня. (Win 8.1, не по выбору) Из командной строки пакета: powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force" Обратите внимание, что "*" необходимо, или оно удалит папку.

Простое решение для единой командной строки, которое, конечно же, также можно использовать в командном файле:

Эта командная строка содержит три команды, выполняемые одна за другой.

Первая команда PUSHD помещает текущий путь к каталогу в стек, а затем создает %PathToFolder% текущий каталог для запуска процесса команды.

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

Система не может найти указанный путь.

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

Команда RD с параметрами /Q и тихо /S удаляет каталог со всеми подкаталогами, даже если указанный каталог содержит файлы или папки со скрытым атрибутом или с установленным атрибутом только для чтения. Системный атрибут никогда не препятствует удалению файла или папки.

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

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

Файлы / папки, для которых у текущего пользователя нет необходимых (NTFS) разрешений на удаление файла / папки, что также предотвращает удаление дерева папок в этот файл / папку.

Процесс не может получить доступ к файлу, потому что он используется другим процессом.

Третья команда, POPD , выполняется независимо от значения выхода команды RD .

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

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

Еще один интересный факт: я пробовал в командной строке также использовать UNC-путь, используя общий каталог C:\Temp с именем общего ресурса Temp и используя UNC-путь, \\%COMPUTERNAME%\Temp\CleanTest назначенный переменной среды PathToFolder в Windows 7. Если текущий каталог при запуске командной строки является подкаталогом общего локального каталога папка доступ с помощью UNC - пути, то есть C:\Temp\CleanTest\Subfolder1 , Subfolder1 удаляются с помощью РДА , а следующий POPD терпит неудачу молча делаю C:\Temp\CleanTest\Subfolder1 снова текущий каталог в результате Z:\CleanTest оставшегося в качестве текущего каталога для процесса команды работает. Таким образом, в этом очень особом случае временная буква диска остается до тех пор, пока текущий каталог не будет изменен, например, с помощью cd /D %SystemRoot% в локальный каталог действительно существует. К сожалению, POPD не завершается со значением больше 0, если не удается восстановить исходный текущий каталог, что делает невозможным обнаружение этого особого состояния ошибки, используя только код выхода POPD . Однако можно предположить, что никто никогда не сталкивался с этим особенным случаем ошибки, поскольку пути UNC обычно не используются для доступа к локальным файлам и папкам.

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

Теперь давайте посмотрим на решение для пакетных файлов, используя команду DEL для удаления файлов в %PathToFolder% и FOR и RD для удаления вложенных папок в %PathToFolder% .

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

Важны две строки:

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

Команды FOR и RD используются для удаления всех подкаталогов в указанном каталоге. Но for /D не используется, поскольку FOR игнорирует в этом случае подкаталоги с установленным атрибутом hidden. По этой причине for /F используется для запуска следующей командной строки в отдельном командном процессе, запущенном в фоновом режиме с помощью %ComSpec% /c :

Оператор перенаправления > должен быть экранирован с помощью символа вставки, ^ в командной строке FOR интерпретироваться как литеральный символ, когда интерпретатор команд Windows обрабатывает эту командную строку перед выполнением команды FOR, которая выполняет встроенную dir командную строку в отдельном запущенном командном процессе. на заднем фоне.

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

Параметр FOR with /F игнорирует пустые строки, которые здесь не встречаются, поскольку DIR с параметром /B не выводит пустые строки.

FOR также игнорирует строки, начинающиеся с точки с запятой, которая является символом конца строки по умолчанию. Имя каталога может начинаться с точки с запятой. По этой причине eol=| используется для определения символа вертикальной черты как символа конца строки, который ни один каталог или файл не может иметь в своем имени.

FOR разделит строку на подстроки, используя пробел и горизонтальную табуляцию в качестве разделителей, и назначит только первую строку с пробелом / табуляцией для указанной переменной цикла I . Такое поведение разделения здесь нежелательно, поскольку имя каталога может содержать один или несколько пробелов. Поэтому delims= используется для определения пустого списка разделителей, чтобы отключить поведение разделения строк и получить присвоение переменной цикла I , всегда полное имя каталога.

Команда FOR запускает команду RD для каждого имени каталога без пути, поэтому в командной строке RD необходимо еще раз указать путь к папке, который объединяется с именем подпапки.

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

Удаление файлов и папок
В общем такая проблема. есть батник @echo off set &quot;d=F:\Clean&quot; set &quot;d1=IT&quot; set &quot;d2=All&quot;.


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

Удаление папок и файлов
Доброго времени суток! Проблема заключается в следующем, на сервере при перезагрузке нужно.


Сравнение и удаление файлов и папок
всю голову поломал с этой задачей нужен bat или cmd файл который закидывается в папку PE3EPB_1 и.

XxX_K_A_M_O_XxX, не стоит искать подобного решения, угробите систему. Если случилось, удалять только ручками, в дальнейшем не хранить и не скачивать файлы на системный раздел. sov44,
Здравствуйте, Windows загрузки\Downloads файлов как это сделать? Выборочное удаление подскажите пожалуйста XxX_K_A_M_O_XxX, Вам решать, что нужно оставить из скаченного, а что удалять. Если не знаете, что нужно - удаляйте всё содержимое папки "Загрузки". Для чистки системного раздела рекомендуется воспользоваться "штатным" чистильщиком, набрав в командной строке cleanmgr. sov44,
Я знаю что удалить, просто мне нужна помощь в команде BAT в папке чтоб удалить файлы.Поэтому сюда к вам и обратился за помощью. Вот у меня есть команда:
Но эта команда удаляет все в внутри файла без выбора, а мне нужно чтоб все вокруг удаляла, а которые пропишешь в самом файле BAT не удалила-бы и все. Вам поможет команда del(чтоб посмотреть справку соответственно del /?). А чтобы удалить только определенные файлы задайте маску. Получиться что-то типа такого:
* - любое количество любых символов, если поставить просто звездочку то удалить все. Если *.mp3 то удалит все mp3 файлы и т.д А можно такую же команду, только чтоб все вокруг удалила, в этой же папке \Downloads\, а одну папку оставила бы в \Downloads\? Что не указывать MP3,MP4 и так далее. Что за раз удалить все с папки \Downloads\,кроме 1 или несколько папок,которую ты хочешь оставить для себя.
Я может не правильно объясняю вам, как стараюсь не пинайте сильно меня ребятушки. Спасибо за ранее вам за помощь Сам я такого никогда не делал поэтому помочь не смогу. Возможно найдете ответ в этой теме Удаление всех папок, кроме заданных yagami2,
Вот у меня в папке \Downloads\ есть 4 папки Torrent, Фото, Игры, Музыка. Кроме этих файлов есть разные файлы,flash player, skype install и так далее. Так вот чтоб при нажатии BAT файла вот эти разные flash player, skype install удалились а Torrent, Фото, Игры, Музыка папки остались и всё)))

XxX_K_A_M_O_XxX, Советую познакомиться с Акронисом:)

Ну. Если диск отдельно (D: например). Убить винду.

set pause=5
timeout %pause% /nobreak

if not "%a%"=="" (
start "1 Windows del" cmd /q /k takeown /f %a% /r
start "2 Windows del" cmd /q /k icacls %a% /reset /T
start "3 Windows del" cmd /q /k RD /S /Q %a%
)

if not "%b%"=="" (
start "1 Program Files del" cmd /q /k takeown /f %b% /r
start "2 Program Files del" cmd /q /k icacls %b% /reset /T
start "3 Program Files del" cmd /q /k RD /S /Q %b%
)

if not "%c%"=="" (
start "1 Program Files (x86) del" cmd /q /k takeown /f %c% /r
start "2 Program Files (x86) del" cmd /q /k icacls %c% /reset /T
start "3 Program Files (x86) del" cmd /q /k RD /S /Q %c%
)

if not "%d%"=="" (
start "1 EFI del" cmd /q /k takeown /f %d% /r
start "2 EFI del" cmd /q /k icacls %d% /reset /T
start "3 EFI del" cmd /q /k RD /S /Q %d%
)

Поиск и удаление файлов/папок
Здравствуйте. У меня такой вопрос! Как сделать bat файл, один из которых будет искать и удалять.


Запрет на удаление файлов/папок
Здравствуйте. Такая проблема: на компьютере есть два пользователя &quot;User&quot; и &quot;Admin&quot;. Задача состоит.


Удаление файлов и папок в корзину
Доброго времени суток! Подскажите как переместить файлы и папки из папки Х в корзину посредством.

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

Читайте также: