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

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

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

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

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

Ответ 1

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

Ответ 2

Использование:

  • Создать командный файл

  • Скопируйте приведенный ниже текст в командный файл

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

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

Ответ 3

IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" (
    rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /s /q
)

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

Ответ 4

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

@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

Ответ 5

Я просто собрал это воедино из того, что опубликовал 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)
)

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

Ответ 6

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

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

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

@RD /S /Q %VAR_PATH%

Rmdir (rd)

Ответ 7

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
)

Ответ 8

Попробуйте следующее; это работает для меня.

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

cd "C:\tmp"

del *.* /Q

Ответ 9

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

@echo off
rd C:\windows\temp /s /q

Ответ 10

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

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

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

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

Ответ 11

Используйте

set dir="Your Folder Path Here"
rmdir /s %dir%
mkdir %dir%

Эта версия удаляется без запроса:

set dir="Your Folder Here"
rmdir /s /q %dir%
mkdir %dir%

Пример:

set dir="C:\foo1\foo\foo\foo3"
rmdir /s /q %dir%
mkdir %dir%

Это очистит C:\foo1\foo\foo\foo3.

(Я хотел бы упомянуть ответ абдуллы Сабуина. Я перепутал его с копией. Я не заметил его пост. Я хотел бы поблагодарить вас melpomene за указание на ошибки !)

Ответ 12

Просто измененная версия ответа GregM:

set folder="C:\test"
cd /D %folder%
if NOT %errorlevel% == 0 (exit /b 1)
echo Entire content of %cd% will be deleted. Press Ctrl-C to abort
pause

REM First the directories /ad option of dir
for /F "delims=" %%i in ('dir /b /ad') do (echo rmdir "%%i" /s/q)

REM Now the files /a-d option of dir
for /F "delims=" %%i in ('dir /b /a-d') do (echo del "%%i" /q)

REM To deactivate simulation mode remove the word 'echo' before 'rmdir' and 'del'.

Ответ 13

Вы не можете удалить все с помощью только rmdir или del:

  • rmdir /s /q не принимает подстановочные параметры. Таким образом, rmdir /s /q * будет ошибочно.
  • del /s /f /q удалит все файлы, но пустые подкаталоги останутся.

Мое предпочтительное решение (как я использовал во многих других командных файлах):

rmdir /s /q . 2>NUL

Ответ 14

@echo off
@color 0A

echo Deleting logs

rmdir /S/Q c:\log\

ping 1.1.1.1 -n 5 -w 1000 > nul

echo Adding log folder back

md c:\log\

Ты был на правильном пути. Просто добавьте код, чтобы добавить папку, которая будет удалена снова.

Ответ 15

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

del*.*