2011-07-26 6 views
99

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

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

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

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

Можете ли вы мне помочь? Благодарю.

+3

Тип '. del /? 'в командной строке. Это даст вам информацию о том, как использовать этот инструмент. Для этого случая 'del *. */S' будет работать **, но не делайте этого в неправильном каталоге! ** –

+29

' rmdir/s/qc: \ users \ tbrollo \ j2mewtk \ 2.5.2 \ appdb \ RMS' – forsvarir

+0

спасибо forsvarir. – user69514

ответ

38

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

+37

Примечание. Если вы хотите обойти «Вы уверены, что хотите удалить ...», вам нужно добавить флаги FQ: 'del./F/Q' – Rhyuk

+28

это удаляет только файлы - не папки – icc97

+28

Это не должно быть помечено как правильный ответ, потому что оно не удаляет папки (как указано в вопросе). –

5

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

cd "C:\tmp" 

del *.* /Q 
+3

Если папка «C: \ tmp» отсутствует (если вы или какое-то другое приложение удалили эту папку), и если вы попытаетесь запустить ее, не удалите ли данные из другой папки внутри «C: \»? (Это случилось со мной) – Vikram

+4

Как отмечает Викрам: 1) Это очень опасно, и 2) он не удаляет подкаталоги, как указано в вопросе. –

+2

В дополнение к папке ... вы можете просто сделать del/q c: \ tmp \ *. * ', Что примерно в миллион раз безопаснее. Не говоря уже о том, что 'cd' изменит путь, а не диск. – Nyerguds

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

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

+9

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

127

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

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

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

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

+4

Удивительно, я искал что-то для очистки файлов и папок для ежемесячной пакетной работы, и это делало трюк. –

+5

Перед тем, как сделать это, убедитесь, что каталог существует. –

+2

Если у вас есть специальные символы в ваших именах, сначала сделайте 'chcp 10000', чтобы изменить кодировку на UTF-16 – Demelziraptor

2

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

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

Это r выдает каталог 'c: \ windows \ temp'. Я не думаю, что это задал первоначальный вопрос. –

+0

Удаление каталога кажется мне самым легким, и если мне нужно его снова создать, я могу. Одной из проблем может быть потеря специальных разрешений для папок. Однако это кажется намного проще, чем большинство других ответов. – madannes

+0

К сожалению, удаление и немедленное воссоздание из пакетного скрипта, похоже, приводит к случайным ошибкам «отказали в доступе», на Win10 ... – Nyerguds

9

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 
+3

Я озадачился точно, как это сработало немного, так как объяснение для других: pushd изменяется на каталог которого вы хотите удалить. Затем, когда rd запрашивает удаление текущего каталога и всех подкаталогов, удаление подкаталогов выполняется успешно, но удаление текущего каталога завершается неудачно - потому что мы находимся в нем. Это вызывает ошибку, которую 2> NUL проглатывает. (2 - поток ошибок). Очень хитрый мистер Стюарт! – Kinetic

+0

О, и «setlocal enableextensions» включает возможность одновременного нажатия текущей директории в стек и изменения каталога. Это только кажется, что требуется pre XP, так как там и позже он по умолчанию имеет значение «В любом случае». – Kinetic

2

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

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

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

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

+0

В соответствии с помощью robocopy '/ MIR :: MIRror дерево каталогов (эквивалентно/E plus/PURGE) .' - поэтому я уверен, что'/E' является избыточным. – Nyerguds

9

Просто поместите это вместе с чего 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) 
) 

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

+0

Итак, быстрый совет - если вы попытаетесь запустить это по сетевому пути, даже с инструкцией «IF EXIST», он не сможет установить папку, и инструкция будет записана в командной строке «UNC-пути, не поддерживающие, по умолчанию в каталог Windows ", то он попытается удалить все в вашей директории windows. Так что будь осторожен. – CBRF23

6

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

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

команда RD может также использоваться.Рекурсивный удалить спокойно без оперативного

@RD /S /Q %VAR_PATH% 

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

4
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 
) 
+0

Большое спасибо, он работает как шарм. – TuanDPH

0

Просто модифицированная версия 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 
-1
@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\ 

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

0

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

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 за указание ошибок!

+0

Это не работает вообще. 'rmdir foo' ошибки, если' foo' не пустой каталог. – melpomene

+0

@melpomene Я нашел ошибку, и она должна быть исправлена! –

+0

Теперь он идентичен ответу Абдуллы Сабуни. – melpomene

0

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

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

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

rmdir /s /q . 2>NUL 
0

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

+1

То же, что и принятый ответ с 26.07.2011 в 21:04. Пожалуйста, не добавляйте ответ, если у вас нет чего-то нового. – Stephan

Смежные вопросы