Пакетный файл. Удаление всех файлов и папок в каталоге
Я хочу иметь пакетный файл, который удалит все папки и файлы в моей папке кэша для моего беспроводного инструментария.
В настоящее время у меня есть следующее:
cd "C:Userstbrolloj2mewtk.5.2appdbRMS"
del *.db
Это удалить .файлы БД в моем каталоге RMS, однако я хочу удалить все до единой вещи из этого каталога
вы можете мне помочь? Спасибо.
15 ответов:
создать пакетный файл
скопируйте текст ниже в пакетный файл
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.5.2\appdb\RMS" ( rmdir "C:\Users\tbrollo\j2mewtk.5.2\appdb\RMS" /s /q )это приведет к удалению всего из папки (и самой папки).
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
просто сложите это вместе из того, что 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%
попробуйте это, это работает для меня, у меня есть приложение, которое сбрасывает данные в моем "C:\tmp" folder & the following работает лучше всего для меня, он даже не спрашивает Да или нет, чтобы удалить данные, я сделал расписание для его запуска через каждые 5 минут
cd "C:\tmp" del *.* /Q
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 )
вы можете использовать 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.Я хотел бы упомянуть @Abdullah Sabouin с этим ответом https://stackoverflow.com/a/44578851/8238944. была путаница в том, что я копировал его. Я не заметил его поста.
Я хотел бы поблагодарить @melpomene за указание на ошибки!
просто модифицированная версия https://stackoverflow.com/users/478183/morty346 Ответ
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или :
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\вы были на правильном пути просто добавить код, чтобы добавить папку, которая удаляется обратно
Comments