Eliminar directorios vacíos en Windows

Eliminar directorios vacíos en Windows 10 es realmente simple con un pequeño script de PowerShell o RoboCopy cmd.

Realmente no hay necesidad de instalar ningún programa para limpiar los directorios vacíos en su computadora o servidor.

Con el uso de PowerShell o RoboCopy, ambos incluidos en Windows 10, podemos eliminar todas las carpetas y subcarpetas vacías.

Siempre es una buena idea enumerar primero los directorios vacíos, así que agregué la opción en ambos scripts.

A continuación un ejemplo para ambos scripts. También probé el script de PowerShell y RoboCopy en un directorio con 11.000 subdirectorios vacíos para ver qué opción es la más rápida.

Eliminar directorios vacíos con PowerShell

A continuación encontrará el script para eliminar directorios vacíos con PowerShell. Si desea probar el script primero, lo que realmente recomiendo hacer, puede configurar la variable $whatif a $verdadero.

Windows crea un archivo oculto, Thumbs.db, en carpetas con imágenes. Estas carpetas parecen estar vacías, incluso con mostrar archivos ocultos en Explorer, no ve Thumbs.db.

Entonces, para eliminar esas carpetas vacías, también puede configurar removeHiddenFiles a $verdadero.

La secuencia de comandos ignorará los archivos ocultos y eliminará la carpeta, incluidos los archivos ocultos.

# Set to true to test the script
$whatIf = $true

# Remove hidden files, like thumbs.db
$removeHiddenFiles = $false

# Get hidden files or not. Depending on removeHiddenFiles setting
$getHiddelFiles = !$removeHiddenFiles

# Remove empty directories locally
Function Delete-EmptyFolder($path)
{
    # Go through each subfolder, 
    Foreach ($subFolder in Get-ChildItem -Force -Literal $path -Directory) 
    {
        # Call the function recursively
        Delete-EmptyFolder -path $subFolder.FullName
    }

    # Get all child items
    $subItems = Get-ChildItem -Force:$getHiddelFiles -LiteralPath $path

    # If there are no items, then we can delete the folder
    # Exluce folder: If (($subItems -eq $null) -and (-Not($path.contains("DfsrPrivate")))) 
    If ($subItems -eq $null) 
    {
        Write-Host "Removing empty folder '${path}'"
        Remove-Item -Force -Recurse:$removeHiddenFiles -LiteralPath $Path -WhatIf:$whatIf
    }
}

# Run the script
Delete-EmptyFolder -path "C:\enter\your\path\here"

En el script, primero configuramos el modo WhatIf. De esta manera, podemos probar el script sin eliminar ninguna carpeta.

A continuación, tenemos la función Delete-EmptyFolder. La función pasará por cada subcarpeta de la ruta dada y llama a la función recursivamente para procesar las subcarpetas también.

Si no hay subcarpetas, solicitará todos los elementos secundarios en la carpeta actual. Si no hay elementos secundarios, la secuencia de comandos eliminará los directorios vacíos.

¿Qué tan rápido es PowerShell con la eliminación de directorios vacíos?

eliminando directorios vacios

Probé ambos scripts contra un directorio con 11.000 subdirectorios vacíos, con 3 niveles de profundidad.

Se necesita PowerShell 12 segundos para eliminar todos los directorios vacíos. Ahí es cuando deshabilita la salida Write-Host en la línea 27. Con la salida, tomó 24 segundos en total.

Ejecutando el guión

La forma más fácil de ejecutar este script es abrir el ISE de Windows PowerShell. De esta manera, puede cambiar fácilmente la ruta y WhatIf variable.

Windows PowerShell ISE también es un programa estándar de Windows 10 que encontrará en su menú Inicio.

eliminar directorios vacíos en Windows 10
  1. Haga clic en comienzo
  2. Escribe PowerShell
  3. Seleccione ISE de Windows PowerShell
  4. Copiar el guión de arriba
  5. Pega el código en la sección del script (es posible que deba expandirlo primero, vea la flecha roja)
  6. cambiar el camino y asegúrate WhatIf se establece en verdadero primero
  7. Haga clic en el botón verde para ejecutar el script.
Eliminar directorios vacíos

Eliminar carpetas vacías con RoboCopy

Otra opción para eliminar carpetas vacías es usar RoboCopy. Esta utilidad de línea de comandos está integrada en Windows desde Windows 7 y se puede usar en PowerShell o CMD.

El truco con RoboCopy es mover el directorio a la misma carpeta. los /S opción copia todos los subdirectorios pero excluye las carpetas vacías. Solo asegúrate de usar exactamente el mismo camino dos veces en RoboCopy.

# Make sure both paths are exactly the same
robocopy "c:\path\to\directory" "c:\path\to\directory" /S /move

Si primero desea enumerar todos los directorios vacíos con RoboCopy, puede usar el /L cambiar.

robocopy "c:\path\to\directory" "c:\path\to\directory" /S /move /L

Desventajas de usar RoboCopy

Hay una desventaja de usar el método RoboCopy, no eliminará los directorios vacíos con un Pulgares.db en eso.

Este es un pequeño archivo creado por Windows en carpetas con imágenes. Puede eliminar este archivo de forma segura si el directorio está más vacío.

Con PowerShell podemos ignorar el archivo y eliminarlo junto con el directorio vacío. No podemos hacer tal cosa con RoboCopy.

¿Qué tan rápido es RoboCopy con la eliminación de carpetas vacías?

eliminar carpetas vacías

Robocopy fue notablemente más rápido que PowerShell. Eliminar los 11.000 directorios solo tomó 4 segundos de media.

Terminando

Siempre pruebe el script primero, use el modo WhatIf o ejecútelo en un par de carpetas de prueba para estar seguro de que está funcionando según los aspectos.

El método RoboCopy es mucho más rápido que PowerShell, pero tenga en cuenta que no eliminará los directorios que contengan un archivo Thumbs.db.

Si tiene alguna pregunta, simplemente deje un comentario a continuación.

Otros artículos relacionados

Cómo usar el comando Net Use para mapear la unidad de red

Cómo usar el comando Net Use para mapear la unidad de red

El comando Net Use es un comando bastante antiguo que todavía se usa comúnmente para conectar unidades de red en ...
Leer Más
Exchange Online y Apple Mail

Exchange Online y Apple Mail

A la mayoría de los usuarios de Apple les gusta mucho la aplicación Apple Mail y no quieren cambiar a ...
Leer Más
¡Cómo reparar el error DNS_PROBE_FINISHED_BAD_CONFIG en 5 minutos!

¡Cómo reparar el error DNS_PROBE_FINISHED_BAD_CONFIG en 5 minutos!

Abre Chrome y navega hasta tu sitio web favorito. Pero en lugar de la página web, obtienes No se puede ...
Leer Más
Eliminar directorios vacíos en Windows

Eliminar directorios vacíos en Windows

Eliminar directorios vacíos en Windows 10 es realmente simple con un pequeño script de PowerShell o RoboCopy cmd. Realmente no ...
Leer Más
Importar perfiles WLAN con Powershell (y PDQ Deploy)

Importar perfiles WLAN con Powershell (y PDQ Deploy)

Si tiene varios sitios o, como en nuestro caso, sitios (de construcción) que van y vienen, desea una manera fácil ...
Leer Más
Revisión de Action1 - Administración de parches - Primeros 100 puntos finales gratis

Revisión de Action1 – Administración de parches – Primeros 100 puntos finales gratis

#patrocinado Mantener sus endpoints actualizados es vital. Los parches de software salen casi todas las semanas en estos días y ...
Leer Más

Deja un comentario