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á

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA