2014-04-15 12:40:31 +0000 2014-04-15 12:40:31 +0000
57
57

Eliminar todos los archivos de una carpeta y sus subcarpetas

Quiero eliminar todos los archivos de una estructura de carpetas, por lo que me queda una estructura de carpetas vacía.

¿Se puede lograr esto en un lote o en VBScript scripting?

He intentado un comando por lotes muy básico, pero esto requería que el usuario permitiera la eliminación de cada archivo. Esta no era una solución adecuada ya que hay muchos cientos de archivos y esto aumentará masivamente con el tiempo.

¿Qué puede sugerir?

Risposte (13)

81
81
81
2014-04-15 13:18:38 +0000

Esto se puede lograr usando PowerShell :

Get-ChildItem -Path C:\Temp -Include *.* -File -Recurse | foreach { $_.Delete()}

Este comando obtiene cada ítem hijo en $path, ejecuta el método de borrado en cada uno, y es bastante rápido. La estructura de carpetas se deja intacta.

Si puede tener archivos sin extensión, use

Get-ChildItem -Path C:\Temp -Include * -File -Recurse | foreach { $_.Delete()}

.

Parece que el parámetro -File puede haber sido añadido después de PowerShell v2. Si ese es el caso, entonces

Get-ChildItem -Path C:\Temp -Include *.* -Recurse | foreach { $_.Delete()}

Debería hacer el truco para los archivos que tienen una extensión.

Si no funciona, compruebe si tiene una versión actualizada de Powershell

29
29
29
2017-11-02 17:21:27 +0000

Corta y suite PowerShell. No estoy seguro de cuál es la versión más baja de PS con la que funcionará.

Remove-Item c:\Tmp\* -Recurse -Force
22
22
22
2014-04-15 12:44:30 +0000

Puedes hacerlo con el comando del:

dir C:\folder
del /S *

El interruptor /S es para borrar sólo los archivos de forma recursiva.

4
4
4
2014-04-15 13:18:19 +0000

Leyendo entre líneas en su pregunta original puedo ofrecerle una línea de código BATCH alternativa que puede usar. Lo que esto hará cuando se ejecute es sólo eliminar los archivos que tengan más de 60 días de antigüedad. De esta manera puedes poner esto en una tarea programada y cuando se ejecuta borra el exceso de archivos que no necesitas en lugar de volar todo el directorio. Puedes cambiar de 60 a 5 días o incluso 1 día si lo deseas. Esto no borra las carpetas.

forfiles -p "c:\path\to\files" -d -60 -c "cmd /c del /f /q @path"
4
4
4
2014-10-28 15:39:38 +0000

Usando PowerShell:

Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse
3
3
3
2018-05-10 07:13:40 +0000

Utilice PowerShell para eliminar un solo archivo o carpeta. Antes de ejecutar el comando Eliminar en powershell necesitamos asegurarnos de que ha iniciado sesión en el servidor o PC con una cuenta que tiene acceso total a los objetos que desea eliminar. Con Ejemplo: http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/

Usando los comandos de PowerShell para eliminar un archivo

Remove-Item -Path “C:\dotnet-helpers\DummyfiletoDelete. txt”

El comando anterior ejecutará y borrará el archivo “DummyfiletoDelete.txt” que se encuentra dentro de la ubicación “C:\dotnet-helpers”.

Usando PowerShell commnads para eliminar todos los archivos

Remove-Item -Ruta “C:\dotnet-helpers*. *

Usando PowerShell para eliminar todos los archivos y carpetas

Eliminar-Item -Ruta "C:\dotnet-helpers*.\N” -recordar

-recurse profundiza y encuentra muchos más archivos. El parámetro –recurse permitirá a PowerShell eliminar cualquier elemento hijo sin pedir permiso. Adicionalmente, el parámetro -force puede ser agregado para eliminar archivos ocultos o de solo lectura.

Usando el comando -Force para eliminar archivos en forma forzada

Usando el comando de PowerShell para eliminar todos los archivos en forma forzada

Remove-Item -Path “C:\dotnet-helpers*.*” -Force

1
1
1
2014-11-20 21:28:24 +0000

Prueba esto usando PowerShell. En este ejemplo quiero borrar todos los archivos .class:

Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}
1
1
1
2015-05-18 11:30:46 +0000

Borrar todos los archivos del directorio y subdirectorios actuales pero dejando la estructura de carpetas.

(/Q) el interruptor es para preguntar al usuario si está bien para borrar

Precaución : inténtelo sin el /Q para asegurarse de que no está borrando nada valioso.

del /S * /Q
1
1
1
2016-10-12 20:45:27 +0000

Esta es la forma más fácil de IMO

Abrir PowerShell, navegar al directorio (cd), THEN

ls -Recurse * | rm

(Poof) todo se ha ido…

Si quieres borrar basado en una extensión específica

ls -Recurse *.docx | rm

ls está listando el directorio

-Recurse es una bandera que le dice a PowerShell que entre en cualquier subdirectorio

* dice todo

*.doc todo con . doc extensión

| alimenta la salida de izquierda a derecha

rm borra

Todas las demás respuestas parecen hacer esto más confuso de lo necesario.

1
1
1
2015-03-16 09:12:32 +0000
  1. En el Explorador de Windows, seleccione el directorio raíz que contiene todos los archivos y carpetas.

  2. Busca *

  3. Ordenar por tipo (todas las carpetas estarán arriba y todos los archivos listados abajo)

    1. Seleccione todos los archivos y pulse Borrar.

Esto eliminará todos los archivos y preservará la estructura de directorios.

0
0
0
2020-03-01 06:34:32 +0000

Podemos borrar todos los archivos de las carpetas y su subcarpeta mediante el siguiente comando.

Get-ChildItem -Recurse -Path 'D:\Powershell Practice' |Where-Object{$_.GetType() -eq [System.IO.FileInfo]} |Remove-Item
0
0
0
2020-02-04 17:43:55 +0000

Con Powershell 5.1:


$extensions_list = Get-ChildItem -Path 'C:\folder_path 

* * 

Elimina todos los itens que no son Directorio. 

$extensión.FullName = Item Path 

$extensión.Attributes = Item Type ( Directory or Archive ) -Recurse

foreach ( $extension in $extensions_list) {

    if ($extension.Attributes -notlike "Directory") {

        Remove-Item $extension.FullName  
    }
}
  • *

Elimina todos los itens que no son Directorio.

$extensión.FullName = Item Path

$extensión.Attributes = Item Type ( Directory or Archive )

-1
-1
-1
2018-10-14 14:59:48 +0000

Como complemento a las respuestas anteriores, en realidad no hay necesidad de usar el Get-Childitem y pasar el resultado a la tubería en las respuestas anteriores, porque la palabra clave -Include está incluida en el comando Remove-Item

Uno puede simplemente:

Remove-Item -Include “.” “C:\Temp” -Recurse