Bir klasördeki tüm dosya ve klasörler cmd çağrısıyla nasıl silinir


Yanıtlar:


142

Hayır, bilmiyorum.

Orijinal dizini herhangi bir nedenle (ACL'ler, & c.) Korumak ve bunun yerine gerçekten boşaltmak istiyorsanız, aşağıdakileri yapabilirsiniz:

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

Bu önce tüm dosyaları dizinden kaldırır ve ardından iç içe geçmiş tüm dizinleri özyinelemeli olarak kaldırır, ancak genel olarak üst düzey dizini olduğu gibi tutar (içeriği hariç).

Bir toplu iş dosyası %içinde fordöngü içinde iki katına çıkmanız gerektiğini unutmayın :

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

3
bunu bir toplu iş dosyası olmadan yapabildim. iki işlemi birleştirmek için && kullanın
Matt Broekhuis

1
Ben tam bir windows-shell noob'um: bu örnekte hedefi bir yola nasıl ayarlayabilirim?
low_rents

Sözcüğü destinationyol ile değiştirirsiniz, gerekirse her şeyin etrafında tırnak işaretleri kullanırsınız.
Joey

4
Bu cevap beni üzüyor, çünkü en iyi cevap bu
KCD

1
@stenci: İkinci satır sadece verilen dizini silebilir. O kadar yinelemeli, gerçekten, ama yok edilemez bir dosyayı silmek. Bu nedenle, bir dizindeki her şeyi kaldırmak için tüm dosyaları ve tüm dizinleri kaldırmanız gerekir. Bunun tek bir dizini ve içindeki her şeyi silmekle ilgili olmadığını unutmayın . Bu, içindeki her şeyi silmek ve ana dizini korumakla ilgilidir .
Joey

40

del c:\destination\*.* /s /qbenim için çalıştı. Umarım bu senin için de işe yarar.


13
Klasörleri değil, tüm dosyaları siler.
Eric

2
Benim için işe yarayan, klasöre gitmekti. (sağ tıklayın, burada açık cmd istemini seçin) sonradel *.*
Daniel L.VanDenBosch

göreli yol örneğidel "../../server/front-end\*.*"
FindOutIslamNow

@ DanielL.VanDenBosch, bu çok yazılabilir değil.
Synetech

29

Sanırım bunu yapmanın en kolay yolu:

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

Yoldaki son "\" önemli kısımdır.


27
Bu aynı zamanda klasörün kendisini de siler.
Archie

Mükemmel, ihtiyacım olan şey bu :)
gNerb

Bu yinelemeli olarak çalışıyor mu, çok uzun olan yol nedir?
eomeroff

2
bunu birleştirmek mkdir C:\FolderToNotToDeletebenim için yeterliydi :)
qbolec

1
(Bu şekilde silinir) Ebeveyninizin klasör ... şimdi yeniden gereken bazı önemli izinleri tutan, bu sorunlu olabilir
Mladen B.

15

Evet! Powershell'i kullanın:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"

Çok kötü PowerShell, hantal, şişkin, çok yavaş bir canavar. : - |
Synetech

13

Alt klasör adları boşluklar içeriyorsa, bunları tırnak işaretleri içine almanız gerekir. Aşağıdaki örnek, bir toplu iş dosyasında kullanılan komutlar için bunu gösterir.

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

6

Dosyayı silmek için:

del PATH_TO_FILE

Tüm dosyaların bulunduğu klasörü silmek için:

rmdir /s /q PATH_TO_FOLDER

Tüm dosyaları belirli bir klasörden silmek (klasörün kendisini silmemek) biraz karmaşıktır. del /s *.*klasörleri silemez, ancak tüm alt klasörlerdeki dosyaları kaldırır. Bu nedenle iki komuta ihtiyaç vardır:

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

İstediğinizi (klasör veya dosya) silmek için aşağıdaki gibi 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%

Birkaç kullanım örneği:

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

1

Tek satırlık kolay bir seçenek, dosya sisteminizde herhangi bir yerde boş bir dizin oluşturmak ve ardından tüm dosyaları kaldırmak için anahtarla ROBOCOPY( http://technet.microsoft.com/en-us/library/cc733145.aspx ) kullanmaktır. /MIRalt klasörler. Varsayılan olarak, robocopy güvenliği kopyalamaz, bu nedenle kök klasörünüzdeki ACL'ler sağlam kalmalıdır.

Ayrıca /r, varsayılan yeniden deneme sayısı 1 milyon olduğundan, muhtemelen yeniden deneme anahtarı için bir değer ayarlamak isteyebilirsiniz .

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

0

Tüm dosyaların ve alt klasörlerin kaldırılmasını gerektiren 33 klasör içeren bir dizin klasörüm vardı. Dizin klasöründe bir komut satırı açtım ve sonra şu komutları kullandım:

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

Bunları iki satıra ayırdım (ilk satırdan sonra enter tuşuna basın ve daha fazlası istendiğinde ikinci satırı ekleyin) çünkü tek bir satıra girilirse bu çalışmayabilir. Bu komut her dizini siler ve ardından boş olan yeni bir tane oluşturur, böylece orijinal dizindeki tüm dosyaları ve alt klasörleri kaldırır.



0

2 basit adımda gerçekleşir. [/ q sessiz, / f zorunlu, / s alt dizin anlamına gelir]

  1. Kaldırmak için dizini boşaltın

    del *.* /f/s/q  
    
  2. Dizini kaldırın

    cd ..
    rmdir dir_name /q/s
    

Resmi görmek


0

bunu deneyin, bu tüm MyFolder'ı root dizin altında arayacak ve MyFolder adlı tüm klasörleri silecektir.

for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"

0
del .\*

Bu Komut, komut satırınızdaki mevcut gezinmeden tüm dosya ve klasörleri siler.

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.