Belirli bir klasördeki tüm dosyaları / alt klasörleri komut istemi ile nasıl silebilirim?


42

Windows 7'de tüm dosyaları ve alt klasörleri bir toplu iş dosyasında silmek ve en üstteki klasörü saklamak istiyorum. Temelde klasörü boşaltmak. Bunun için komut satırı talimatı nedir?


3
Nitpick'e değil, ancak bunu "komut isteminden" değil "DOS" dan nasıl yapacağınızı düşünüyorsunuz. Win ME'den beri bir DOS alt sistemi olmamıştır.
MDMarra

@MarkM: Evet, var / vardı ntvdmancak 64-bit sistemler pazar payını kazandıkça, giderek daha fazla alakasızlaşıyor.
Joey,

Yanıtlar:


54

delVe /Sişaretini kullanarak bunu yapabilirsiniz (tüm dosyaları tüm alt dizinlerden çıkarmasını söylemek için):

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

2
yours is better: D +1 - Cevabımı
silindi

3
Açıklama: del, Sil, S ise Özyinelemeli anlamına gelir.
Tamara Wijsman

3
@Tony_Henrich, msdos komutları ile ilgili daha fazla bilgiyi burada bulabilirsiniz. computerhope.com/msdos.htm
Moab

3
ve / Q kullanımı, istenmeyen alt klasörlerin boş kalmasını sağlar.
Tony_Henrich

3
Bu yanlış cevap ve neden çok fazla oy aldığını bilmiyorum. İnsanların soruyu tam olarak anlamadığı ve yorumları okumadığı anlaşılıyor! Cevapları gözden geçirip doğru olanı seçeceğim.
Tony_Henrich

22

En iyi Çözüm: örneğin, ana dizinin tüm dosyalarını ve alt dizinlerini silmek istiyorum, "C: \ Users \ Desktop \ New folder \" diyelim. Kolay yol, üç komutun altındaki toplu iş dosyasını oluşturmaktır.

cd C: \ Kullanıcılar \ Masaüstü \ Yeni klasör \

del * / S / Q

rmdir / S / Q "C: \ Kullanıcılar \ Masaüstü \ Yeni klasör \"

Burada ilk önce tüm alt dizinlerdeki tüm dosyaları temizler ve ardından tüm boş alt dizinleri temizler. Geçerli çalışma dizini üst dizin yani "\ Yeni klasör" olduğundan, rmdir komutu bu dizinin kendisini silemez.


1
Sistem kök klasörü silemediğinde bir uyarı dışında çok iyi çalışıyor.
Jerther

2
İyi değil. Sabit kodlu yollar ve ona bakarak, klasörü boşaltmaz. Onu kaldırır. Ayrıca çok tehlikeli. Yolun çıkmaması veya yanlış yazılması durumunda geçerli klasördeki dosyaları siler.
Tony_Henrich

1
@Tony_Henrich'in rmdirkomutun silineceğini söylediği gibiNew folder
Nuktu

Hayır. Bu aslında "Yeni klasör" klasörünün kendisini silmeden tamamen temizlenir. Tek sorun, işletim sistemi ana klasörü silmezken küçük bir uyarı vermesidir. Ayrıca, büyük bir klasörünüz yoksa, del komutu gereksizdir, bu durumda daha hızlı olabilir. Sadece bunu değiştirebilirsin (Yorumlarda satır sonlarının olmaması için üzgünüm): set FOLDER = "% userprofile% \ Desktop \ New klasörü" cd% FOLDER% rmdir / S / Q% FOLDER% \> nul 2> & 1
HSuke

3
Gerçekten tehlikeli. Biri devam ederse ve kaldırır / adını değiştirir / `C: \ Users \ Desktop \ New \` klasörü, CD ile ilk satır başarısız olur ve toplu iş dosyanız geçerli (varsayılan) dizindeki her şeyi mutlu bir şekilde siler. Hangi çalışma dizini sizin veya C: \ Windows \ System32
Ishmaeel

9

Üst dizine gidin:

pushd "Parent Directory"

Alt klasörleri silin:

rd /s /q . 2>nul

1
Vay, bu hackish. :)
Tarnay Kálmán

1
Bu aslında iki önceki cevaba eşdeğerdir.
Scott,

Yukarıda kabul edilmiştir - bu önceki cevapların bir kopyasıdır, değiştirilenlerin eş anlamlısı olan komutlarla değiştirilir. pushdBuraya cdzaten yapmayan hiçbir şey eklemiyor.
Hashim

Bu, şu ana kadar kullanabildiğim tek kişi, tam olarak askerin sorduğu şey için işe yaradı, diğerleri ise tüm dosyaları siler. Elbette rmdir /s path-to-folderiçindeki her şeyi içeren klasörü silecek, ancak çalışan çalışma dizinindeki her şeyi nasıl sileceğinizi bilmek istedi.
Katz_Katz_Katz

Bu cevap benim için en iyi sonucu verdi. Diğer tüm cevaplarda, / Q kullanırken boş olmayan dizinleri silmemiştir ve / Q kullanılmadığında her zaman onay istemiştir.
marijnr

5
rmdir "c:\pathofyourdirectory" /q /s

Alıntıları kullanmayı unutmayın; /q /sbunun için tüm depoları ve sormadan siler.


2
Soru, "Windows 7'deki bir toplu iş dosyasındaki tüm dosyaları ve alt klasörleri silmek ve en üstteki klasörü tutmak istiyorum " idi.
Werner Henze

5

dosyaları ve alt klasörleri silmek için rmdir'i kullanabilirsiniz, bunun gibi:

rmdir /s/q MyFolderPath

Bununla birlikte, özellikle yapınızda rmdir'den önce del'i kullanacak çok sayıda alt klasör varsa, aşağıdaki gibi daha hızlıdır:

del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath

İlk seçenek "dizin boş değil" hatası veriyor. İkinci seçenekteki ilk komut tüm klasörü siler. İstediğim gibi tutmuyor. İlk komut tüm klasörü silerse ikinci komut gerekli değildir.
Tony_Henrich

rmdirKomut (her ikisi de aynıdır) ana klasörü siler. Bu sorunun cevabı değil . Neden insanlar okumaz?
Haşim

3

Bir klasördeki tüm dosyaları (tüm alt klasörler dahil) silmek ve kök klasörü sağlam tutmak için bazı hata koşullarına güvenmek istemiyorsanız (başka bir cevapta gördüğüm gibi) aşağıdaki gibi bir toplu iş dosyanız olabilir:

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

)

Ve sonra basitçe şöyle çağırırsınız:

empty_my_folder.bat "C:\whatever\is\my folder"

3

Bu üç talimatları yarasa dosyanıza koyarak hızlı ve kolay bir şekilde yapabilirsiniz:

mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder

Bu, gizli veya sistem dosyalarını da kaldırdığı için son derece kullanışlıdır.
zayıflarpaz

1

Klasör adlarında boşluklar varken bu benim için daha iyi çalıştı.

@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

)

İnsanlar her zaman isimlerinde boşluk bırakmayı unuturlar.
Kevin Panko

1

Dosyayı silmek için:

del PATH_TO_FILE

İçinde tüm dosyalar bulunan klasörü silmek için:

rmdir /s /q PATH_TO_FOLDER

Tüm dosyaları belirli bir klasörden silmek (klasörün kendisini silmek değil) biraz karmaşıktır. del /s *.*klasörleri silemez, ancak dosyaları tüm alt klasörlerden kaldırır. Yani iki komuta ihtiyaç var:

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

İstediğiniz şeyi (klasör veya dosya) silmek için bir komut dosyası oluşturabilirsiniz 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%

Çok az kullanım örneği:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder

0

Bu benim için çalıştı.

  1. Dosyaları silmek istediğiniz klasörün içinde gezinin.
  2. Tür: del *
  3. Y evet
  4. tamam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.