Windows kullanıyorum.
Sistem çağrısı ile bir klasördeki tüm dosya ve klasörleri silmek istiyorum.
Ben şöyle arayabilirim:
>rd /s /q c:\destination
>md c:\destination
Daha kolay bir yol biliyor musun?
Windows kullanıyorum.
Sistem çağrısı ile bir klasördeki tüm dosya ve klasörleri silmek istiyorum.
Ben şöyle arayabilirim:
>rd /s /q c:\destination
>md c:\destination
Daha kolay bir yol biliyor musun?
Yanıtlar:
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 for
dö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"
destination
yol ile değiştirirsiniz, gerekirse her şeyin etrafında tırnak işaretleri kullanırsınız.
del c:\destination\*.* /s /q
benim için çalıştı. Umarım bu senin için de işe yarar.
del *.*
del "../../server/front-end\*.*"
Sanırım bunu yapmanın en kolay yolu:
rmdir /s /q "C:\FolderToNotToDelete\"
Yoldaki son "\" önemli kısımdır.
mkdir C:\FolderToNotToDelete
benim için yeterliydi :)
Evet! Powershell'i kullanın:
powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
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
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. /MIR
alt 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
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.
Ana dizine gidin
Alt klasörleri silin
/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt
pushd
sen de kullanmalısın popd
. Maalesef popd
dizini sildiğinizde çalışmaz. Yani cd
bunun yerine yapmak zorundasın pushd
.
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"
del .\*
Bu Komut, komut satırınızdaki mevcut gezinmeden tüm dosya ve klasörleri siler.