Come eliminare tutti i file e le cartelle in una cartella tramite chiamata cmd


Risposte:


142

No, non ne conosco uno.

Se vuoi mantenere la directory originale per qualche motivo (ACL, ecc.) E invece vuoi davvero svuotarla, puoi fare quanto segue:

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

Questo rimuove prima tutti i file dalla directory, quindi rimuove in modo ricorsivo tutte le directory nidificate, ma nel complesso mantiene la directory di primo livello così com'è (eccetto per il suo contenuto).

Notare che all'interno di un file batch è necessario raddoppiare %all'interno del forciclo:

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

3
sono stato in grado di farlo senza un file batch. usa && per concatenare le due operazioni
Matt Broekhuis

1
Sono un noob di windows-shell completo: come imposto la destinazione su un percorso con questo esempio?
low_rents

Sostituisci la parola destinationcon il percorso, possibilmente usando le virgolette intorno all'intera cosa, se necessario.
Joey

4
Questa risposta mi rattrista, perché è la migliore risposta
KCD

1
@stenci: la seconda riga può eliminare solo la directory specificata. Lo fa in modo ricorsivo, infatti, ma non può cancellare un file. Pertanto, per rimuovere tutto all'interno di una directory è necessario rimuovere tutti i file e tutte le directory. Nota che non si tratta di eliminare una singola directory e tutto ciò che contiene . Si tratta di eliminare tutto all'interno e mantenere la directory principale.
Joey

40

del c:\destination\*.* /s /qha funzionato per me. Spero che funzioni anche per te.


13
Elimina tutti i file ma non le cartelle.
Eric,

2
Quello che ha funzionato per me è stato accedere alla cartella. (Maiusc clic destro, selezionare Apri prompt cmd qui) quindidel *.*
Daniel L. VanDenBosch

esempio per percorso relativodel "../../server/front-end\*.*"
FindOutIslamNow

@ DanielL.VanDenBosch, non è molto programmabile.
Synetech

29

Penso che il modo più semplice per farlo sia:

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

L'ultima "\" nel percorso è la parte importante.


27
Ciò elimina anche la cartella stessa.
Archie

Perfetto, questo è ciò di cui ho bisogno :)
gNerb

Funziona in modo ricorsivo qual è il percorso troppo lungo?
eomeroff

2
combinarlo con è mkdir C:\FolderToNotToDeletestato sufficiente per me :)
qbolec

1
Questo può essere problematico se la tua cartella principale (che viene eliminata in questo modo) contiene alcune autorizzazioni importanti, che ora devi ricreare ...
Mladen B.

15

Sì! Usa Powershell:

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

Peccato che PowerShell sia una bestia ingombrante, gonfia e molto lenta. : - |
Synetech

13

Se i nomi delle sottocartelle possono contenere spazi, è necessario racchiuderli tra virgolette con escape. L'esempio seguente mostra ciò per i comandi utilizzati in un file batch.

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

6

Per eliminare il file:

del PATH_TO_FILE

Per eliminare la cartella con tutti i file al suo interno:

rmdir /s /q PATH_TO_FOLDER

Eliminare tutti i file da una cartella specifica (non eliminare la cartella stessa) è un po 'complicato. del /s *.*non può eliminare le cartelle, ma rimuove i file da tutte le sottocartelle. Quindi sono necessari due comandi:

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

Puoi creare uno script per eliminare quello che vuoi (cartella o file) in questo modo 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%

Pochi esempi di utilizzo:

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

1

Una semplice opzione di una riga consiste nel creare una directory vuota da qualche parte nel file system, quindi utilizzare ROBOCOPY( http://technet.microsoft.com/en-us/library/cc733145.aspx ) con il/MIR interruttore per rimuovere tutti i file e sottocartelle. Per impostazione predefinita, robocopy non copia la sicurezza, quindi gli ACL nella cartella principale dovrebbero rimanere intatti.

Probabilmente si desidera anche impostare un valore per /rl'opzione Riprova , perché il numero predefinito di tentativi è 1 milione.

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

0

Avevo una cartella indice con 33 cartelle che necessitavano di rimuovere tutti i file e le sottocartelle al loro interno. Ho aperto una riga di comando nella cartella dell'indice e poi ho usato questi comandi:

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

Li ho separati in due righe (premi invio dopo la prima riga e quando ne viene chiesto di aggiungere una seconda riga) perché se inserito su una singola riga potrebbe non funzionare. Questo comando cancellerà ogni directory e quindi ne creerà una nuova vuota, rimuovendo così tutti i file e le sottocartelle nella directory originale.



0

Sono necessari 2 semplici passaggi. [/ q significa tranquillo, / f significa forzato, / s significa sottodirectory]

  1. Svuota la directory da rimuovere

    del *.* /f/s/q  
    
  2. Rimuovi la directory

    cd ..
    rmdir dir_name /q/s
    

Guarda l'immagine


0

prova questo, questo cercherà in tutta MyFolder nella directory principale ed eliminerà tutte le cartelle denominate MyFolder

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

0
del .\*

Questo comando elimina tutti i file e le cartelle dalla navigazione corrente nella riga di comando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.