Ответ 1
del *.*
вместо del *.db
. Это удалит все.
Я хочу иметь пакетный файл, который удалит все папки и файлы в моей папке кэша для моего беспроводного инструментария.
В настоящее время у меня есть следующее:
cd "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS"
del *.db
Это удалит все файлы .db в моем каталоге RMS, однако я хочу удалить все из этого каталога. Как я могу это сделать?
del *.*
вместо del *.db
. Это удалит все.
Использование:
Создать командный файл
Скопируйте приведенный ниже текст в командный файл
set folder="C:\test"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
Это удалит все файлы и папки.
IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" (
rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /s /q
)
Это приведет к удалению всего из папки (и самой папки).
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
Я просто собрал это воедино из того, что опубликовал 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)
)
Он добавляет быструю проверку того, что папка, определенная в переменной, существует первой, меняет каталог на папку и удаляет содержимое.
Вы можете сделать это, используя del
и флаг /S
(чтобы указать, что нужно извлекать все файлы из всех подкаталогов):
del /S C:\Path\to\directory\*
Также можно использовать команду RD. Рекурсивно тихо удалить без запроса:
@RD /S /Q %VAR_PATH%
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
)
Попробуйте следующее; это работает для меня.
У меня есть приложение, которое сбрасывает данные в мою папку "C:\tmp", и следующее работает лучше всего для меня. Он даже не спрашивает Да или Нет, чтобы удалить данные. Я составил график запуска каждые 5 минут
cd "C:\tmp"
del *.* /Q
Еще лучше, скажем, я хочу удалить все из папки C:\windows\temp
.
@echo off
rd C:\windows\temp /s /q
Вы можете использовать robocopy, чтобы отразить пустую папку в папке, которую вы очищаете.
robocopy "C:\temp\empty" "C:\temp\target" /E /MIR
Это также работает, если вы не можете удалить или воссоздать фактическую папку.
Требуется существующий пустой каталог.
Используйте
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 за указание на ошибки !)
Просто измененная версия ответа 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'.
Вы не можете удалить все с помощью только rmdir
или del
:
rmdir /s /q
не принимает подстановочные параметры. Таким образом, rmdir /s /q *
будет ошибочно.del /s /f /q
удалит все файлы, но пустые подкаталоги останутся.Мое предпочтительное решение (как я использовал во многих других командных файлах):
rmdir /s /q . 2>NUL
@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\
Ты был на правильном пути. Просто добавьте код, чтобы добавить папку, которая будет удалена снова.
Вы должны выполнить эту команду, чтобы удалить все файлы:
del*.*