// Resumen: Devuelve el tamaño del contenido de un directorio // y todos sus subdirectorios // // Sintaxis: //[ <Result> = ] gfSizeFolder (<pcDirectorio> is string // [, <pcTipeReturn> is string [, <sError> is string]]) // // Parámetros: // pcDirectorio (ANSI string): Ruta <root> del // directorio a tratar // pcTipeReturn (ANSI string - valor // predeterminado="B"): // Devolver el valor como: B (defecto) // , KB, MB, GB, TB, PB, EB // sError (ANSI string - valor predeterminado=""): // Si se produce un error, se devuelve // el mensaje del error // Valor de retorno: // numeric: Un valor correspondiente al parámetro /7 "pcTipeReturn" o -1 si ocurre un error // // Ejemplo: // gfSizeFolder("c:\temp","MB") // PROCEDURE gfSizeFolder(LOCAL pcDirectorio is string, LOCAL pcTipeReturn is string = "B", LOCAL sError is string = "") //*--------------------------------------------------------------- //* //* Devuelve el tamaño del directorio pasado como parámetro (y //* subdirectorios) //* NOTA: if ocurre Error, devuelve -1 //* //* Exabyte (EB) //* Petabyte (PB) //* Terabyte (TB) //* Gigabyte (GB) //* Megabyte (MB) //* Kilobyte (KB) //* byte (B) //* //*--------------------------------------------------------------- lnSizeBytes, lnSizeReturn are numeric WHEN EXCEPTION IN lnSizeBytes = fDirSize(pcDirectorio) // Si ha ocurrido un error IF ErrorOccurred THEN // Lanzamos la excepción para capturar el error ExceptionThrow(1,ErrorInfo(errMessage)) END SWITCH pcTipeReturn CASE "KB" lnSizeReturn = lnSizeBytes / 1024 CASE "MB" lnSizeReturn = lnSizeBytes / (1024^2) CASE "GB" lnSizeReturn = lnSizeBytes / (1024^3) CASE "TB" lnSizeReturn = lnSizeBytes / (1024^4) CASE "PB" lnSizeReturn = lnSizeBytes / (1024^5) CASE "EB" lnSizeReturn = lnSizeBytes / (1024^6) OTHER CASE lnSizeReturn = lnSizeBytes END DO lnSizeReturn = -1 sError = ExceptionInfo(errMessage) END RESULT (lnSizeReturn)