Jak usunąć wszystkie pliki i foldery w folderze przez wywołanie cmd

Odpowiedzi:

137

Nie, nie znam żadnego.

Jeśli z jakiegoś powodu chcesz zachować oryginalny katalog (listy ACL, & c.), A zamiast tego naprawdę chcesz go opróżnić, możesz wykonać następujące czynności:

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

To najpierw usuwa wszystkie pliki z katalogu, a następnie rekurencyjnie usuwa wszystkie zagnieżdżone katalogi, ale ogólnie zachowując katalog najwyższego poziomu taki, jaki jest (z wyjątkiem jego zawartości).

Zwróć uwagę, że w pliku wsadowym musisz podwoić %w forpętli:

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
Joey
źródło
3
mogłem to zrobić bez pliku wsadowego. użyj &&, aby połączyć dwie operacje
Matt Broekhuis,
1
Jestem kompletnym noobem powłoki systemu Windows: jak ustawić miejsce docelowe na ścieżkę w tym przykładzie?
low_rents
Zastępujesz słowo destinationścieżką, ewentualnie używając cudzysłowów wokół całości, jeśli to konieczne.
Joey
4
Ta odpowiedź mnie zasmuca, bo to najlepsza odpowiedź
KCD
1
@stenci: Druga linia może usunąć tylko podany katalog. Robi to rzeczywiście rekurencyjnie, ale nie może usunąć pliku. Dlatego, aby usunąć wszystko, co znajduje się w katalogu, musisz usunąć wszystkie pliki i wszystkie katalogi. Zauważ, że nie chodzi o usunięcie pojedynczego katalogu i wszystkiego w nim zawartego. Chodzi o usunięcie wszystkiego wewnątrz i zachowanie katalogu nadrzędnego.
Joey
39

del c:\destination\*.* /s /qpracował dla mnie. Mam nadzieję, że u Ciebie też to zadziała.

Sean
źródło
13
Usuwa wszystkie pliki, ale nie foldery.
Eric
2
Udało mi się przejść do folderu. ( del *.*
przesuń
przykład dla ścieżki względnejdel "../../server/front-end\*.*"
FindOutIslamNow
@ DanielL.VanDenBosch, to nie jest zbyt skryptowalne.
Synetech
29

Myślę, że najłatwiej to zrobić:

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

Ostatni „\” na ścieżce jest ważną częścią.

Banan
źródło
27
Spowoduje to również usunięcie samego folderu.
Archie
Idealnie, właśnie tego potrzebuję :)
gNerb
Czy to działa rekurencyjnie, jaka to ścieżka jest zbyt długa?
eomeroff
2
połączenie tego z mkdir C:\FolderToNotToDeletewystarczyło dla mnie :)
qbolec
1
Może to być problematyczne, jeśli folder nadrzędny (który zostanie usunięty w ten sposób) ma pewne ważne uprawnienia, które musisz teraz odtworzyć ...
Mladen B.
15

Tak! Użyj Powershell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Rosberg Linhares
źródło
Szkoda, że ​​PowerShell to nieporęczna, rozdęta, bardzo powolna bestia. : - |
Synetech
13

Jeśli nazwy podfolderów mogą zawierać spacje, należy je ująć w cudzysłów. Poniższy przykład ilustruje to dla poleceń używanych w pliku wsadowym.

set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
fractor
źródło
6

Aby usunąć plik:

del PATH_TO_FILE

Aby usunąć folder zawierający wszystkie pliki:

rmdir /s /q PATH_TO_FOLDER

Usunięcie wszystkich plików z określonego folderu (nie usuwanie samego folderu) jest nieco skomplikowane. del /s *.*nie może usuwać folderów, ale usuwa pliki ze wszystkich podfolderów. Potrzebne są więc dwa polecenia:

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

Możesz utworzyć skrypt, aby usunąć cokolwiek chcesz (folder lub plik) w następujący sposób 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%

Kilka przykładów użycia:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
Maxim Suslov
źródło
1

Jedną z łatwych opcji w jednym wierszu jest utworzenie pustego katalogu gdzieś w systemie plików, a następnie użycie ROBOCOPY( http://technet.microsoft.com/en-us/library/cc733145.aspx ) z /MIRprzełącznikiem, aby usunąć wszystkie pliki i podfoldery. Domyślnie robocopy nie kopiuje zabezpieczeń, więc listy ACL w folderze głównym powinny pozostać nienaruszone.

Prawdopodobnie chcesz również ustawić wartość przełącznika ponawiania /r, ponieważ domyślna liczba ponownych prób to 1 milion.

robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
BateTech
źródło
0

Miałem folder indeksu z 33 folderami, które wymagały usunięcia wszystkich plików i podfolderów. Otworzyłem wiersz poleceń w folderze indeksu, a następnie użyłem tych poleceń:

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

Podzieliłem je na dwie linie (wciśnij Enter po pierwszej linii, a gdy zostaniesz poproszony o dodanie drugiej linii), ponieważ wpisanie w jednej linii może nie zadziałać. To polecenie usunie każdy katalog, a następnie utworzy nowy, który jest pusty, usuwając w ten sposób wszystkie pliki i podfoldery w oryginalnym katalogu.

Ynotinc
źródło
0

To wymaga 2 prostych kroków. [/ q oznacza cicho, / f oznacza wymuszone, / s oznacza podkatalog]

  1. Opróżnij katalog do usunięcia

    del *.* /f/s/q  
    
  2. Usuń katalog

    cd ..
    rmdir dir_name /q/s
    

Widzieć zdjęcie

Jenna Leaf
źródło
0

spróbuj tego, to przeszuka cały MyFolder w katalogu głównym i usunie wszystkie foldery o nazwie MyFolder

for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
Shailesh Tiwari
źródło
0
del .\*

To polecenie usuwa wszystkie pliki i foldery z bieżącej nawigacji w linii poleceń.

Yuvraj Hinger
źródło