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



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



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



cd "C:Userstbrolloj2mewtk.5.2appdbRMS"
del *.db


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



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

704   15  

15 ответов:

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.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%

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

попробуйте это, это работает для меня, у меня есть приложение, которое сбрасывает данные в моем "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
)

еще лучше, скажем, я хочу удалить все под 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.

Я хотел бы упомянуть @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

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

@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

    Ничего не найдено.