jueves, 5 de enero de 2012

Averigua el tamaño de una carpeta con C


El objetivo de este post es ver cómo funciona un programa en C que averigua el tamaño de una carpeta de Windows dada (subcarpetas incluidas), ya sea en el sistema de archivos local o en red.

Por ejemplo, con esta herramienta (fsize.exe, una vez compilado y enlazado) y el siguiente script:

@echo off
fsize c:\windows
fsize "c:\Archivos de programa"
fsize \\server-1\datos\pepe

obtuve los siguientes resultados:

c:\windows:
6.48 GBytes - 28332 archivos - 2459 carpetas.

c:\Archivos de programa:
2.13 GBytes - 14883 archivos - 2834 carpetas.

\\server-1\datos\pepe:
1.48 GBytes - 3659 archivos - 91 carpetas.


El código fuente de fsize.c está disponible en:

http://sites.google.com/site/ramiroencinas/soft/fsize.c

e incluye comentarios explicando el funcionamiento.

El archivo fsize.exe junto con el código fuente también está disponible en:

http://sites.google.com/site/ramiroencinas/soft/fsize.zip

Notas:
  • El compilador de C que he utilizado es lcc-win32.
  • El compilado-linkado lo realizé con: lc fsize.c -o fsize.exe -s
  • El archivo generado ejecutable fsize.exe tiene un tamaño de 32KBytes (es lo bueno de programar directamente con la API de Windows).
  • Funciona a partir de Windows XP.