Borrar directorios vacios con BATCH


Les dejo un script para borrar directorios vacios con BATCH. Es muy útil, ya que no dependerás de programas ni tendrás que hacerlo de forma manual.

Script con comentarios

Desactivo el echo para que no muestre el prompt

@echo off

Con DIR listo los directorios o carpetas (según opciones) de la carpeta donde se encuentra el script (%1). Pueden cambiar el %1 por la ruta donde deseen eliminar las carpetas.

Las opciones de DIR son:

  1. /ad: Listo sólo los directorios (/a: muestra archivos con atributos específicos – d: directorios, ver dir /? para más atributos).
  2. /b: Usa el formato simple (sin encabezados ni sumarios).
  3. /s: Muestra los archivos del directorio especificado y todos sus subdirectorios.

Además con un PIPE o TUBERÍA (|) se le pide que ordene de forma inversa. Comando sort para ordenar y su opción /r de reverso.

El resultado se enviará a un archivo llamado vacios.txt

dir %1 /ad/b/s | sort /r > vacios.txt

Se ejecuta un for que por cada linea del archivo vacios.txt, ejecutará el comando rd (borrar directorio). Esto quiere decir que eliminará cada carpeta vacía que se haya guardado su ruta en vacios.txt.

for /f "delims==" %%1 in (vacios.txt) do ( rd "%%1" )

Por último, borramos el archivo vacios.txt.

del vacios.txt

En la siguiente imagen podemos ver el por qué debemos utilizar las opciones de DIR y ordenar el resultado con SORT.

El primer comando dir /ad nos muestra los directorios de Downloads. Al agregar las opciones /b/s, muestra la ruta completa de los directorios y subdirectorios sin encabezados (sólo rutas).

Por último el sort /r nos invierte el orden de esos directorios, ya que debemos borrar desde el último directorio hacia el principal. Si quisiéramos borrar en orden, no nos permitiría al no estar el directorio vacío.

El script completo sin comentarios.

@echo off
dir %1 /ad/b/s | sort /r > vacios.txt
for /f "delims==" %%1 in (vacios.txt) do ( rd "%%1" )
del vacios.txt

Recuerden que para borrar las carpetas de X directorios, sólo deben cambiar el dir %1 por dir “RUTA DEL DIRECTORIO”. Ejemplo:

dir "C:\Users\Francisco\Downloads" /ad/b/s | sort /r > vacios.txt

Espero les sirva.