Cómo eliminar todos los archivos y carpetas en una carpeta mediante una llamada cmd

Respuestas:

137

No, no conozco ninguno.

Si desea conservar el directorio original por algún motivo (ACL, etc.) y, en cambio, realmente desea vaciarlo, puede hacer lo siguiente:

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

Esto primero elimina todos los archivos del directorio y luego, de forma recursiva, elimina todos los directorios anidados, pero en general, mantiene el directorio de nivel superior tal como está (excepto por su contenido).

Tenga en cuenta que dentro de un archivo por lotes necesita duplicar el %dentro del forciclo:

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
Joey
fuente
3
Pude hacer esto sin un archivo por lotes. use el && para concatenar las dos operaciones
Matt Broekhuis
1
Soy un novato completo de Windows-Shell: ¿cómo configuro el destino en una ruta con este ejemplo?
low_rents
Reemplaza la palabra destinationpor la ruta, posiblemente usando comillas alrededor de todo si es necesario.
Joey
4
Esta respuesta me entristece, porque es la mejor respuesta
KCD
1
@stenci: La segunda línea solo puede eliminar el directorio dado. De hecho, lo hace de forma recursiva, pero no puede eliminar un archivo. Por lo tanto, para eliminar todo dentro de un directorio, debe eliminar todos los archivos y todos los directorios. Tenga en cuenta que no se trata de eliminar un solo directorio y todo lo que contiene. Se trata de eliminar todo lo que hay dentro y mantener el directorio principal.
Joey
39

del c:\destination\*.* /s /qtrabajó para mi. Espero que eso también funcione para ti.

Sean
fuente
13
Elimina todos los archivos pero no las carpetas.
Eric
2
Lo que funcionó para mí fue navegar a la carpeta. (Mayús, haga clic con el botón derecho, seleccione el indicador de cmd abierto aquí) y luegodel *.*
Daniel L. VanDenBosch
ejemplo de ruta relativadel "../../server/front-end\*.*"
FindOutIslamNow
@ DanielL.VanDenBosch, eso no es muy programable.
Synetech
29

Creo que la forma más sencilla de hacerlo es:

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

La última "\" en la ruta es la parte importante.

Banan
fuente
27
Esto también elimina la propia carpeta.
Archie
Perfecto, esto es lo que necesito :)
gNerb
¿Funciona de forma recursiva cuál es el camino que es demasiado largo?
eomeroff
2
combinar esto con mkdir C:\FolderToNotToDeletefue suficiente para mí :)
qbolec
1
Esto puede ser problemático si su carpeta principal (que se elimina de esta manera) tiene algunos permisos importantes, que ahora necesita volver a crear ...
Mladen B.
15

¡Si! Utilice Powershell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Rosberg Linhares
fuente
Lástima que PowerShell sea una bestia engorrosa, hinchada y muy lenta. : - |
Synetech
13

Si los nombres de las subcarpetas pueden contener espacios, debe rodearlos entre comillas de escape. El siguiente ejemplo muestra esto para los comandos utilizados en un archivo por lotes.

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

Para borrar un archivo:

del PATH_TO_FILE

Para eliminar la carpeta con todos los archivos en ella:

rmdir /s /q PATH_TO_FOLDER

Eliminar todos los archivos de una carpeta específica (no eliminar la carpeta en sí) es un poco complicado. del /s *.*no puede eliminar carpetas, pero elimina archivos de todas las subcarpetas. Entonces se necesitan dos comandos:

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

Puede crear una secuencia de comandos para eliminar lo que desee (carpeta o archivo) de esta manera 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%

Pocos ejemplos de uso:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
Maxim Suslov
fuente
1

Una opción sencilla de una línea es crear un directorio vacío en algún lugar de su sistema de archivos y luego usar ROBOCOPY( http://technet.microsoft.com/en-us/library/cc733145.aspx ) con el /MIRinterruptor para eliminar todos los archivos y subcarpetas. De forma predeterminada, robocopy no copia la seguridad, por lo que las ACL en su carpeta raíz deben permanecer intactas.

También es probable que desee establecer un valor para el interruptor de reintento /r, porque el número predeterminado de reintentos es 1 millón.

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

Tenía una carpeta de índice con 33 carpetas que necesitaban eliminar todos los archivos y subcarpetas. Abrí una línea de comando en la carpeta de índice y luego usé estos comandos:

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

Los separé en dos líneas (presione enter después de la primera línea y, cuando se le solicite, agregue la segunda línea) porque si se ingresa en una sola línea, es posible que no funcione. Este comando borrará cada directorio y luego creará uno nuevo que está vacío, eliminando así todos los archivos y subcarpetas del directorio original.

Ynotinc
fuente
0

Toma 2 sencillos pasos. [/ q significa silencioso, / f significa forzado, / s significa subdirectorio]

  1. Vaciar el directorio para eliminar

    del *.* /f/s/q  
    
  2. Eliminar el directorio

    cd ..
    rmdir dir_name /q/s
    

Ver imagen

Hoja de Jenna
fuente
0

intente esto, esto buscará todo MyFolder en el directorio raíz y eliminará todas las carpetas llamadas MyFolder

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

Este comando elimina todos los archivos y carpetas de la navegación actual en su línea de comando.

Yuvraj Hinger
fuente