Пакетный файл.Удалить все файлы и папки в каталоге - PullRequest
124 голосов
/ 27 июля 2011

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

В настоящее время у меня есть следующее:

cd "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS"
del *.db

Это будетудалить все файлы .db в моем каталоге RMS, однако я хочу удалить все элементы из этого каталога

Можете ли вы мне помочь?Спасибо.

Ответы [ 15 ]

145 голосов
/ 09 мая 2013

Создать пакетный файл

скопировать текст ниже в пакетный файл

set folder="C:\test"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)

Удалить все файлы И папки

42 голосов
/ 27 июля 2011

del *.* вместо del *.db. Это удалит все.

30 голосов
/ 22 апреля 2013
IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" (
    rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /s /q
)

Это удалит все из папки (и самой папки).

14 голосов
/ 30 июня 2014

del *.* удалит только файлы, но не подкаталоги.Чтобы уничтожить содержимое каталога, вы можете использовать этот скрипт:

@echo off
setlocal enableextensions
if {%1}=={} goto :HELP
if {%1}=={/?} goto :HELP
goto :START

:HELP
echo Usage: %~n0 directory-name
echo.
echo Empties the contents of the specified directory,
echo WITHOUT CONFIRMATION. USE EXTREME CAUTION!
goto :DONE

:START
pushd %1 || goto :DONE
rd /q /s . 2> NUL
popd

:DONE
endlocal
12 голосов
/ 03 февраля 2016

Просто соединим это с тем, что опубликовал morty346:

set folder="C:\test"
IF EXIST "%folder%" (
    cd /d %folder%
    for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
)

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

9 голосов
/ 10 марта 2016

Вы можете сделать это, используя del и флаг /S (чтобы указать, что нужно извлекать все файлы из всех подкаталогов):

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

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

@RD /S /Q %VAR_PATH%

https://technet.microsoft.com/en-gb/library/bb490990.aspx

5 голосов
/ 21 сентября 2016
set "DIR_TO_DELETE=your_path_to_the_folder"

IF EXIST %DIR_TO_DELETE% (
    FOR /D %%p IN ("%DIR_TO_DELETE%\*.*") DO rmdir "%%p" /S /Q
    del %DIR_TO_DELETE%\*.* /F /Q
)
4 голосов
/ 16 августа 2012

Попробуйте, это работает для меня, у меня есть приложение, которое выгружает данные в мою папку "C: \ tmp", и следующее работает лучше всего для меня, оно даже не спрашивает Да или Нет, чтобы удалить данные,Я сделал расписание для запуска через каждые 5 минут

cd "C:\tmp"

del *.* /Q
2 голосов
/ 04 ноября 2015

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

robocopy "C:\temp\empty" "C:\temp\target" /E /MIR

Это также работает, если вы не можете удалить или воссоздать фактическую папку.

Требуется существующий пустой каталог.

2 голосов
/ 30 июня 2014

Еще лучше, скажем, я хочу удалить все из папки c: \ windows \ temp.

@echo off
rd c:\windows\temp /s /q
...