Bagaimana saya bisa menghapus semua file / subfolder dalam folder yang diberikan melalui command prompt?

42

Saya ingin menghapus semua file dan subfolder dalam file batch di Windows 7 dan menyimpan folder teratas. Pada dasarnya mengosongkan folder. Apa instruksi baris perintah untuk itu?

Tony_Henrich
sumber
3
Bukan untuk nitpick, tetapi Anda mencari bagaimana melakukan ini "dari command prompt" bukan dari "DOS." Belum ada subsistem DOS sejak Win ME.
MDMarra
@MarkM: Ya, ada / dulu ntvdmtetapi ketika sistem 64-bit mendapatkan pangsa pasar semakin tidak relevan.
Joey

Jawaban:

55

Anda dapat melakukan ini menggunakan deldan /Sbendera (untuk memberi tahu menghapus semua file dari semua subdirektori):

del /S C:\Path\to\directory\*
MDMarra
sumber
2
milik Anda lebih baik: D +1 - Menghapus jawaban saya
BloodPhilia
3
Penjelasan: del adalah singkatan dari Delete dan S adalah kepanjangan dari Recursive.
Tamara Wijsman
3
@ Tony_Henrich, Pelajari lebih lanjut tentang perintah MSDM di sini. computerhope.com/msdos.htm
Moab
3
dan menggunakan / Q menyimpan sub folder kosong yang tidak diinginkan.
Tony_Henrich
3
Ini adalah jawaban yang salah dan saya tidak tahu mengapa menerima banyak suara. Tampaknya orang-orang tidak memahami pertanyaan sepenuhnya dan tidak membaca komentar! Saya akan memeriksa jawabannya dan memilih yang benar.
Tony_Henrich
22

Solusi terbaik: mis. Saya ingin menghapus semua file dan sub-direktori dari direktori induk katakanlah "C: \ Users \ Desktop \ New folder \". Cara mudah adalah membuat file batch di bawah tiga perintah.

cd C: \ Users \ Desktop \ New folder \

del * / S / Q

rmdir / S / Q "C: \ Users \ Desktop \ New folder \"

Di sini pertama-tama akan membersihkan semua file di semua sub-direktori dan kemudian membersihkan semua sub-direktori yang kosong. Karena direktori kerja saat ini adalah direktori induk yaitu "\ Folder baru", perintah rmdir tidak dapat menghapus direktori ini sendiri.

Annasaheb
sumber
1
Bekerja sangat baik, kecuali untuk peringatan ketika sistem tidak dapat menghapus folder root.
Jerther
2
Tidak baik. Jalur kode keras dan dengan melihatnya, itu tidak mengosongkan folder. Itu menghapusnya. Sangat berbahaya juga. Itu menghapus file di folder saat ini jika jalur tidak keluar atau salah eja.
Tony_Henrich
1
Seperti @Tony_Henrich mengatakan rmdirperintah akan menghapusNew folder
Nuktu
Tidak. Ini benar-benar berfungsi membersihkan sepenuhnya "Folder baru" tanpa menghapus folder itu sendiri. Satu-satunya masalah adalah bahwa ia memberikan peringatan kecil ketika OS gagal menghapus folder induk. Juga, perintah del berlebihan jika Anda tidak memiliki folder besar, dalam hal ini mungkin lebih cepat. Anda dapat memodifikasinya (Maaf tentang tidak adanya jeda baris dalam komentar): set FOLDER = "% userprofile% \ Desktop \ Folder baru" cd% FOLDER% rmdir / S / Q% FOLDER% \> nul 2> & 1
HSuke
3
Sangat berbahaya. Jika seseorang melanjutkan dan menghapus / mengganti nama `C: \ Users \ Desktop \ New folder`, baris pertama dengan CD gagal dan file batch Anda dengan senang hati menghapus semua yang ada di direktori (default) saat ini. Yang bisa berakhir menjadi direktori kerja Anda atau C: \ Windows \ System32
Ishmaeel
9

Arahkan ke direktori induk:

pushd "Parent Directory"

Hapus sub folder:

rd /s /q . 2>nul
pengguna340956
sumber
1
Wow, itu retas. :)
Tarnay Kálmán
1
Ini pada dasarnya setara dengan dua jawaban sebelumnya.
Scott
Setuju dengan di atas - ini adalah salinan jawaban sebelumnya, diganti dengan perintah yang identik dengan yang mereka ganti. pushdtidak menambahkan apa pun di sini yang cdbelum melakukan.
Hashim
ini adalah satu-satunya yang dapat saya gunakan sejauh ini yang bekerja persis untuk apa yang diminta penanya, semua yang lain hanya menghapus semua file. Tentu saja rmdir /s path-to-folderakan menghapus folder dengan semua barang di dalamnya, tetapi penanya ingin tahu cara menghapus semua yang ada di direktori kerja.
Katz_Katz_Katz
Jawaban ini paling cocok untuk saya. Dengan semua jawaban lain, itu tidak menghapus direktori yang tidak kosong ketika menggunakan / Q dan selalu meminta konfirmasi ketika tidak menggunakan / Q.
marijnr
5
rmdir "c:\pathofyourdirectory" /q /s

Jangan lupa untuk menggunakan tanda kutip dan untuk /q /situ akan menghapus semua repositori dan tanpa diminta.

Pengguna Super
sumber
2
Pertanyaannya adalah "Saya ingin menghapus semua file dan subfolder dalam file batch di Windows 7 dan menyimpan folder teratas. "
Werner Henze
5

Anda dapat menggunakan rmdir untuk menghapus file dan subfolder, seperti ini:

rmdir /s/q MyFolderPath

Namun, ini secara signifikan lebih cepat, terutama ketika Anda memiliki banyak subfolder dalam struktur Anda untuk menggunakan del sebelum rmdir, seperti ini:

del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath
Einbert Alshtein
sumber
Opsi pertama memberikan kesalahan "direktori tidak kosong". Perintah pertama dalam opsi kedua, menghapus seluruh folder. Itu tidak menyimpannya seperti yang saya inginkan. Perintah kedua tidak diperlukan jika perintah pertama menghapus seluruh folder.
Tony_Henrich
The rmdirperintah (keduanya sama) akan menghapus folder induk. Ini bukan jawaban untuk pertanyaan itu. Mengapa orang tidak membaca?
Hashim
3

Jika Anda ingin menghapus semua file dalam folder, termasuk semua subfolder dan tidak bergantung pada beberapa kondisi kesalahan untuk menjaga folder root tetap utuh (seperti yang saya lihat di jawaban lain), Anda bisa memiliki file batch seperti ini:

@echo off

REM Checking for command line parameter
if "%~1"=="" (

    echo Parameter required.
    exit /b 1

) else (

    REM Change directory and keep track of the previous one
    pushd "%~1"

    if errorlevel 1 (

        REM The directory passed from command line is not valid, stop here.
        exit /b %errorlevel%

    ) else (

        REM First we delete all files, including the ones in the subdirs, without confirmation
        del * /S /Q

        REM Then we delete all the empty subdirs that were left behind
        for /f %%D IN ('dir /b /s /a:d "%~1"') DO rmdir /S /Q "%%D"

        REM Change directory back to the previous one
        popd

        REM All good.
        exit /b 0
    )

)

Dan kemudian Anda cukup menyebutnya dengan:

empty_my_folder.bat "C:\whatever\is\my folder"
Gio
sumber
3

Anda dapat melakukannya dengan cepat dan mudah dengan memasukkan tiga instruksi ini ke file bat Anda:

mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder
darah api
sumber
Ini sangat berguna karena juga menghapus semua file sistem atau tersembunyi.
titik lemah
1

Ini bekerja lebih baik untuk saya ketika saya memiliki spasi di nama folder.

@echo off
REM ---- Batch file to clean out a folder
REM Checking for command line parameter
if "%~1"=="" (

echo Parameter required.
exit /b 1

) else (
echo ***********************************************************************************
    echo *** Deleting all files, including the ones in the subdirs, without confirmation *** 
    del "%~1\*" /S /Q
echo ***********************************************************************************
    REM Deleting all the empty subdirs that were left behind
FOR /R "%~1" %%D IN (.) DO (
    if "%%D"=="%~1\."  (
    echo *** Cleaning out folder: %~1 *** 
    ) else (
    echo Removed folder "%%D"
    rmdir /S /Q "%%D"
    )
) 

    REM All good.
    exit /b 0

)
Ed Hammond
sumber
Orang-orang selalu lupa memiliki spasi dalam namanya.
Kevin Panko
1

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 (tidak menghapus folder itu sendiri) agak rumit. del /s *.*tidak dapat menghapus folder, tetapi menghapus file dari semua subfolder. Jadi diperlukan 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
0

Inilah yang bekerja untuk saya.

  1. Menavigasi di dalam folder tempat Anda ingin menghapus file.
  2. Mengetik: del *
  3. Y untuk ya.
  4. Selesai
Erv
sumber