Batch file. Menghapus semua file dan folder dalam direktori

Saya ingin memiliki sebuah file batch yang akan menghapus semua folder dan file di folder cache untuk wireless toolkit.

Saat ini saya memiliki berikut:

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

Ini akan menghapus semua .db file di RMS direktori, namun aku ingin menghapus setiap hal dari direktori ini. Bagaimana saya bisa melakukan ini?

Mengomentari pertanyaan (6)

Gunakan:

  • Membuat file batch

  • Menyalin teks di bawah ini ke dalam file batch

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

Ini akan menghapus semua file dan folder.

Komentar (11)
Larutan

del *.* bukan del *.db. Yang akan menghapus semuanya.

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

Ini akan menghapus segala sesuatu dari folder (folder itu sendiri).

Komentar (2)

del *.* hanya akan menghapus file, tetapi tidak subdirektori. Untuk nuke isi dari sebuah direktori, anda dapat menggunakan script ini:

@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
Komentar (3)

Aku hanya menempatkan ini bersama-sama dari apa yang morty346 posted:

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)
)

Ia menambahkan cepat memeriksa bahwa folder yang didefinisikan di variabel yang ada pertama, perubahan direktori ke folder, dan menghapus isi.

Komentar (1)

Anda dapat melakukan ini dengan menggunakan del dan /S flag (untuk kirim ke recurse semua file dari semua subdirektori):

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

The RD perintah ini juga dapat digunakan. Rekursif menghapus diam-diam tanpa prompt:

@RD /S /Q %VAR_PATH%

Rmdir (rd)

Komentar (0)
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
)
Komentar (1)

Cobalah hal berikut ini; ia bekerja untuk saya.

Saya memiliki sebuah aplikasi yang membuang data di saya "C:\tmp" folder, dan berikut karya-karya yang terbaik untuk saya. Itu doesn't bahkan meminta Ya atau Tidak ada untuk menghapus data. Saya telah membuat jadwal untuk menjalankannya setelah setiap 5 menit.

cd "C:\tmp"

del *.* /Q
Komentar (4)

Anda bisa menggunakan robocopy untuk cermin kosong folder ke folder anda membersihkan.

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

Hal ini juga bekerja jika anda bisa't menghapus atau menciptakan folder yang sebenarnya.

Ini tidak memerlukan aplikasi yang ada di direktori kosong.

Komentar (1)

Lebih baik lagi, let's mengatakan saya ingin menghapus segala sesuatu di bawah C:\windows\temp folder.

@echo off
rd C:\windows\temp /s /q
Komentar (3)

Gunakan

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

Versi ini akan menghapus tanpa meminta:

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

Contoh:

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

Ini akan jelas C:\foo1\foo\foo\foo3.

(saya ingin menyebutkan Abdullah Sabouin's jawaban. Ada yang mencampur tentang saya menirunya. Saya tidak melihat jabatannya. Saya ingin mengucapkan terima kasih melpomene untuk menunjukkan kesalahan!)

Komentar (7)

Hanya versi modifikasi dari GregM's jawaban:

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'.
Komentar (0)

Anda tidak bisa menghapus semuanya dengan baik rmdir atau del sendirian:

  • rmdir /s /q tidak menerima wildcard params. Jadi rmdir /s /q * akan kesalahan.
  • del /s /f /q akan menghapus semua file, tapi kosong subdirektori akan tetap.

Saya solusi yang lebih disukai (seperti yang saya telah digunakan di banyak file batch) adalah:

rmdir /s /q . 2>NUL
Komentar (0)

Anda harus menjalankan perintah ini dalam rangka untuk menghapus semua file:

del*.*
Komentar (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\

Anda berada di jalur yang benar. Hanya menambahkan kode untuk menambahkan folder yang dihapus kembali lagi.

Komentar (1)