Public Function ScanDir(sDir As String) As Long
Dim sFile As String
Dim sPath As String
Dim hStat As Stat
Dim aDir As String[]
Dim iSize As Long
Try hStat = Stat(sDir)
If Error Then Return -1
iSize = hStat.Size
If hStat.Type <> gb.Directory Then Return iSize
Try aDir = Dir(sDir)
For Each sFile In aDir
sPath = sDir &/ sFile
Try hStat = Stat(sPath)
If Error Then Continue
With hStat
If .Type = gb.Directory Then
Try iSize += ScanDir(sPath)
Endif
Try iSize += .Size
End With
Next
Return iSize
End
Public Sub Form_Open()
Print ScanDir(User.Home)
End
Public Sub ScanDir(sPath As String) As String
Dim sFile As String
Dim lSize As Long
For Each sFile In Dir(sPath, "*", gb.File)
lSize += Stat(sPath &/ sFile).Size
Next
Return sPath & " = " & Format(lSize / 1000000, "0.0") & "MB"
End
(09-03-2021, 17:39)cogier escribió: ¿Ayudará esto?
(09-03-2021, 22:08)jguardon escribió: Sólo funciona si dentro de un directorio sólo hay ficheros. Si hay varios niveles de directorios y subdirectorios, creo que no va a funcionar. Tendría que ser una función recursiva que vaya entrando en cada subdirectorio, sumando tamaños y regresando a la raíz para continuar con el siguiente.