Cara menghapus semua file dan folder di folder dengan panggilan cmd

Jawaban:

142

Tidak, saya tidak tahu siapa pun.

Jika Anda ingin mempertahankan direktori asli karena alasan tertentu (ACL, & c.), Dan sebaliknya benar-benar ingin mengosongkannya, Anda dapat melakukan hal berikut:

del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"

Ini pertama-tama menghapus semua file dari direktori, dan kemudian secara rekursif menghapus semua direktori bertingkat, tetapi secara keseluruhan menjaga direktori tingkat atas sebagaimana adanya (kecuali isinya).

Perhatikan bahwa dalam sebuah file batch Anda perlu melipatgandakan %dalam forlingkaran:

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
Joey
sumber
3
saya bisa melakukan ini tanpa file batch. gunakan && untuk menggabungkan dua operasi
Matt Broekhuis
1
Saya seorang noob windows-shell: bagaimana cara mengatur tujuan ke jalur dengan contoh ini?
low_rents
Anda mengganti kata destinationdengan jalur, mungkin menggunakan tanda kutip di sekitar semuanya jika perlu.
Joey
4
Jawaban ini membuat saya sedih, karena ini adalah jawaban terbaik
KCD
1
@stenci: Baris kedua hanya dapat menghapus direktori yang diberikan. Ia melakukannya secara rekursif, tetapi tidak dapat menghapus file. Oleh karena itu, untuk menghapus semua yang ada di dalam direktori, Anda harus menghapus semua file, dan semua direktori. Perhatikan bahwa ini bukan tentang menghapus satu direktori dan semua yang ada di dalamnya. Ini tentang menghapus semua yang ada di dalam dan menjaga direktori induk.
Joey
40

del c:\destination\*.* /s /qbekerja untuk saya. Saya harap itu berhasil juga untuk Anda.

Sean
sumber
13
Menghapus semua file tetapi tidak foldernya.
Eric
2
Apa yang berhasil bagi saya adalah menavigasi ke folder tersebut. (geser klik kanan, pilih buka cmd prompt di sini) laludel *.*
Daniel L. VanDenBosch
contoh untuk jalur relatifdel "../../server/front-end\*.*"
FindOutIslamNow
@ DanielL.VanDenBosch, itu tidak terlalu bisa ditulis.
Synetech
29

Menurut saya cara termudah untuk melakukannya adalah:

rmdir /s /q "C:\FolderToNotToDelete\"

"\" Terakhir di jalur adalah bagian penting.

Pisang
sumber
27
Ini juga menghapus folder itu sendiri.
Archie
Sempurna, inilah yang saya butuhkan :)
gNerb
Apakah ini bekerja secara rekursif jalur apa yang terlalu panjang?
eomeroff
2
menggabungkan ini dengan mkdir C:\FolderToNotToDeletesudah cukup bagi saya :)
qbolec
1
Ini bisa menjadi masalah jika folder induk Anda (yang terhapus dengan cara ini) memiliki beberapa izin penting, yang sekarang perlu Anda buat ulang ...
Mladen B.
15

Iya! Gunakan Powershell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Rosberg Linhares
sumber
Sayang sekali PowerShell adalah binatang yang merepotkan, membengkak, dan sangat lambat. : - |
Synetech
13

Jika nama subfolder mungkin berisi spasi, Anda perlu mengelilinginya dalam tanda kutip lolos. Contoh berikut menunjukkan ini untuk perintah yang digunakan dalam file batch.

set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
fraktor
sumber
6

Untuk menghapus file:

del PATH_TO_FILE

Untuk menghapus folder dengan semua file di dalamnya:

rmdir /s /q PATH_TO_FOLDER

Untuk menghapus semua file dari folder tertentu (bukan menghapus folder itu sendiri) agak sedikit rumit. del /s *.*tidak dapat menghapus folder, tetapi menghapus file dari semua subfolder. Jadi dibutuhkan dua perintah:

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"

Anda dapat membuat skrip untuk menghapus apa pun yang Anda inginkan (folder atau file) seperti ini mydel.bat:

@echo off
setlocal enableextensions

if "%~1"=="" (
    echo Usage: %0 path
    exit /b 1
)

:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1

:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%

Beberapa contoh penggunaan:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
Maxim Suslov
sumber
1

Salah satu opsi satu baris yang mudah adalah membuat direktori kosong di suatu tempat di sistem file Anda, lalu gunakan ROBOCOPY( http://technet.microsoft.com/en-us/library/cc733145.aspx ) dengan/MIR sakelar untuk menghapus semua file dan subfolder. Secara default, robocopy tidak menyalin keamanan, jadi ACL di folder root Anda harus tetap utuh.

Mungkin juga ingin menyetel nilai untuk coba lagi /r, karena jumlah default percobaan ulang adalah 1 juta.

robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
BateTech
sumber
0

Saya memiliki folder indeks dengan 33 folder yang membutuhkan semua file dan subfolder dihapus di dalamnya. Saya membuka baris perintah di folder indeks dan kemudian menggunakan perintah ini:

for /d in (*) do rd /s /q "%a" & (
md "%a")

Saya pisahkan menjadi dua baris (tekan enter setelah baris pertama, dan ketika diminta lebih banyak tambahkan baris kedua) karena jika dimasukkan dalam satu baris ini mungkin tidak berfungsi. Perintah ini akan menghapus setiap direktori dan kemudian membuat yang baru yang kosong, sehingga menghapus semua file dan subflolder di direktori asli.

Ynotinc
sumber
0

Dibutuhkan 2 langkah sederhana. [/ q berarti diam, / f berarti terpaksa, / s berarti subdir]

  1. Kosongkan direktori untuk dihapus

    del *.* /f/s/q  
    
  2. Hapus direktori

    cd ..
    rmdir dir_name /q/s
    

Lihat gambar

Daun Jenna
sumber
0

coba ini, ini akan mencari semua MyFolder di bawah root dir dan menghapus semua folder bernama MyFolder

for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
Shailesh Tiwari
sumber
0
del .\*

Perintah ini menghapus semua file & folder dari navigasi saat ini di baris perintah Anda.

Yuvraj Hinger
sumber