Truco: cómo borrar todas las subcarpetas de una carpeta excepto unas cuantas

Borrar carpetas o archivos puede parecer una trivialidad y lo es en la mayoría de los casos. Como casi todo en la vida la cosa se complica con los grandes números. Si tenemos que borrar una gran carpeta con miles de archivos y muchos gigas de tamaño la cosa llevará tiempo y además se necesita tener bastante espacio libre en disco para hacerlo (el porqué de esto lo desconozco. Parece una paradoja pero es así).


Hoy me he encontrado en un atolladero así. Un pequeño NAS que tenemos en el DataCenter para hacer algunas copias de seguridad estaba repleto. En una carpeta conflictiva en concreto había unas 150 subcarpetas cada una de ellas con varios gigas, y miles de archivos y una estructura compleja de varias decenas de subcarpetas. Necesitaba borrar la mayor parte de ellas para hacer espacio (ya no se necesitaban) pero no lo podía conseguir desde el explorador de Windows. El proceso de todas formas iba a durar mucho tiempo. ¿Cómo puedo automatizar esto? El mayor problema además es que no tenía que borrar todas sino «casi» todas. En informática los «casi» son siempre los que suponen un reto ¿no? 🙂


Bueno, la solución más rápida y sencilla fue usar la línea de comandos. Ábrela y vete a la carpeta en la que quieres trabajar.


Lo primero es crear un archivo de texto con la lista de subcarpetas dentro de mi carpeta problemática. Necesitaba sólo los nombres de los archivos, sin nada más. El comando necesario es este:



dir /ad /b > carpetas.txt


De este modo creamos un archivo carpetas.txt que contendrá los nombres de todas las carpetas de la carpeta actual.


Ahora abre el archivo de texto y borra los nombres de las carpetas que quieres conservar. Con esto consigues una lista de carpetas a borrar. Ahora sólo necesitas iterar por ellas en un bucle eliminándolas, para lo que sólo tienes que escribir esto en la línea de comandos:



For /f «delims=» %n in (carpetas.txt) do rmdir /s /q «%n»


¡Listo! Tardará un montón también si hay muchas carpetas y son muy grandes, pero te hará el trabajo sin poner mucho de tu parte y de manera mucho más eficiente que usando la línea de comandos y siendo mucho más selectivo sobre lo que vas a borrar.


Yo, como es evidente, no soy especialista en sistemas ni mucho menos, así que espero que esto le sirva a otros que tampoco lo sean y a veces «les toque» 🙂


Nota: si quieres usar la última línea dentro de un archivo .bat y no directamente sobre la línea de comandos deberás usar doble porcentaje en lugar de uno simple para el nombre de la variable de bucle, así:



For /f «delims=» %%n in (carpetas.txt) do rmdir /s /q «%%n»


o de otro modo no te funcionará.

Sin categoría

5 thoughts on “Truco: cómo borrar todas las subcarpetas de una carpeta excepto unas cuantas

  1. Hola! Una duda. cuando creo el archivo bat, no ejecuta el comando que incluye el símbolo de append «>»
    Anexo mi código para ver si me pueden ayudar, saludos

    @Echo Off
    cd C:Documents and Settings%username%Configuración localTemp
    dir /ad /b > carpetas.txt
    find «PERFIL» carpetas.txt > carpetas2.txt
    for /f «delims=» %%n in (carpetas2.txt) do rmdir /s /q «%%n»
    del carpetas2.txt
    del carpetas.txt
    @Echo On

  2. Hola.
    Mi problema es que unporgrama por error (Eclipse), al hacer una importación, me ha creado no se cuantas subcareptas anidadas (puedo tener una ruta de más de 60 subcarpetas).
    No las puedo eliminar porque Windows 7 no es capaz de gestionar rutas tan largas.
    Ni si quiera puedo hacer un cd hasta ellas porque tampoco es capaz de gestionarlas.
    ¿Como hago para boorrar esto?
    Gracias.

  3. Primero que todo gracias, aunque no se si puedes decirme cómo hacer un .bat que automáticamente cada tres o cuatro días elimine todas las carpetas de un directorio excepto tres o cuatro, teniendo en cuenta, que no se cuáles son las carpetas que se crearán, es decir, que no sea necesaro escribir en el archivo de texto, el nombre exacto de las carpetas que quiero borrar, sino, al contrario, el nombre de las carpetas que quiero salvar, y el resto que se borren. De antemano Muchas Gracias.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *