Usuń pliki lub foldery rekursywnie w systemie Windows CMD

139

Jak rekursywnie usuwać pliki lub foldery w systemie Windows z wiersza poleceń?

Znalazłem to rozwiązanie, w którym ścieżkę jeździmy w wierszu poleceń i uruchamiamy to polecenie.

Podałem przykład z folderem z rozszerzeniem pliku .svn:

for /r %R in (.svn) do if exist %R (rd /s /q "%R")
modasser
źródło
Co masz na myśli mówiąc „dokąd jedziemy” ?
Peter Mortensen

Odpowiedzi:

132

Wykonaj następujące kroki:

  1. Otwórz wiersz polecenia
  2. Zmień katalog na wymaganą ścieżkę
  3. Wydaj następujące polecenie

    del /S *.svn
    
DGuntoju
źródło
4
U mnie nie działa, usuwa tylko pliki w bieżącym katalogu.
delphirules
126

Inne odpowiedzi nie działały dla mnie, ale to:

del /s /q *.svn
rmdir /s /q *.svn

/ q wyłącza monity Tak / Nie

/ s oznacza usunięcie pliku (i) ze wszystkich podkatalogów.

Lucas
źródło
Myślę, że moje potrzeby są takie same, jak to, co próbujesz zrobić - próbuję usunąć wszystkie foldery .svn w katalogu projektu i wszystkie podkatalogi. W systemie Windows 2012 ta odpowiedź nie działa dla mnie. Usuwa folder .svn w bieżącym katalogu, ale nie z żadnego z katalogów podrzędnych.
Jim
46

Możesz użyć tego w batskrypcie:

rd /s /q "c:\folder a"

Teraz po prostu zmień c:\folder alokalizację folderu. Cytowanie jest potrzebne tylko wtedy, gdy nazwa folderu zawiera spacje.

Sean Vaughn
źródło
To polecenie nie działa i generuje błąd, jak poniżej D: \> rd / s / q "D: \ Root a" System nie może znaleźć określonego pliku.
abhayk
6
O ile twój katalog naprawdę nie ma space aw nazwie, pomiń tę część.
Jesse Chisholm
22
RMDIR path_to_folder /S

dawny. RMDIR "C:\tmp" /S

Zauważ, że zostaniesz zapytany, czy naprawdę chcesz usunąć folder „C: \ tmp”. Połączenie go z przełącznikiem / Q spowoduje ciche usunięcie folderu (np. RMDIR "C:\tmp" /S /Q)

Anton
źródło
8

Aby usunąć plik, napisałem następujący prosty plik wsadowy, który rekursywnie usuwał wszystkie pliki .pdf:

del /s /q "\\ad1pfrtg001\AppDev\ResultLogs\*.pdf"
del /s /q "\\ad1pfrtg001\Project\AppData\*.pdf"

Nawet dla lokalnego katalogu możemy go użyć jako:

del /s /q "C:\Project\*.pdf"

To samo można zastosować do usuwania katalogu, w którym wystarczy zmienić del za pomocą rmdir .

khichar.anil
źródło
4

Jeśli chcesz rekurencyjnie usunąć określone rozszerzenie, użyj tego:

For /R "C:\Users\Desktop\saleh" %G IN (*.ppt) do del "%G"
Saleh ahmed
źródło
3

Możesz też:

del /s /p *.{your extension here}

Pojawi /psię monit o każdy znaleziony plik, jeśli denerwujesz się usunięciem czegoś, czego nie powinieneś.

Michael Armes
źródło
2

Użyj polecenia rmdir systemu Windows

To znaczy rmdir / S / Q C: \ Temp

Te również używam od kilku lat bezbłędnie.

Sprawdź inne opcje z: forfiles /?

Usuń rekursywnie SQM / telemetrię w folderze systemu Windows

forfiles /p %SYSTEMROOT%\system32\LogFiles /s /m *.* /d -1 /c "cmd /c del @file"

Usuń rekursywnie pliki Windows TMP

forfiles /p %SYSTEMROOT%\Temp /s /m *.* /d -1 /c "cmd /c del @file"

Usuń rekursywnie pliki i foldery TEMP użytkowników

forfiles /p %TMP% /s /m *.* /d -1 /c "cmd /c del @file"
mjoao
źródło
2

Do całkowitego wyczyszczenia folderu natywnymi poleceniami i uzyskania dziennika o tym, co zostało zrobione.

oto niezwykły sposób na zrobienie tego:

załóżmy, że chcemy wyczyścić katalog d: \ temp

mkdir d:\empty
robocopy /mir d:\empty d:\temp
rmdir d:\empty
Maks
źródło
To bardzo sprytne rozwiązanie, które rozwiązało mój problem. Użyłem robocopy do skopiowania mojego katalogu AppData, nie myśląc o Junction, który sam się odwołuje. Tylko w ten sposób mogłem rekurencyjnie usunąć wszystkie ukryte pliki. Nigdy nie zapomnij o / xj!
Chris Larabell
0

W przypadku plików ukrytych musiałem użyć następującego:

DEL /S /Q /A:H Thumbs.db
Selrac
źródło
Przestarzały. Windows XP nie jest obsługiwany przez Microsoft co.
Mesalcode
Musiałem tego użyć, aby usunąć pliki .dcm, które zostały po przywracaniu kopii zapasowej (Windows 10)
Gerald Murphy
0
dir /b %temp% >temp.list
for /f "delims=" %%a in (temp.list) do call rundll32.exe advpack.dll,DelNodeRunDLL32 "%temp%\%%a"
alexsupra
źródło