Unser heutiger Tipp zeigt, wie sich unter Einbeziehung des FileSystemObjekt (FSO) folgende Ordner-Informationen ermitteln lassen:
Setzen Sie hierzu zunächst einen Verweis auf die Microsoft Scripting Runtime-DLL (Menü Projekt - Verweise). Und hier der Code ' Ordner-Informationen ermitteln ' + Gesamtgröße ' + Anzahl enthaltener Ordner ' + Anzahl enthaltener Dateien Private Sub GetFolderInfo(ByVal FolderSpec As String, _ ByRef folder_cnt As Long, ByRef file_cnt As Long, _ ByRef folder_size As Currency) Dim FSO As Scripting.FileSystemObject Dim nFolder As Folder ' Verweis auf FSO-Objekt Set FSO = New Scripting.FileSystemObject ' ggf. abschließenden Backslash hinzufügen If Right$(FolderSpec, 1) <> "\" Then _ FolderSpec = FolderSpec & "\" ' Prüfen, ob der Ordner existsiert If FSO.FolderExists(FolderSpec) Then ' Folder-Objekt erstellen Set nFolder = FSO.GetFolder(FolderSpec) ' Größe des Ordners folder_size = nFolder.Size ' Informationen über alle Unterordner und ' Dateien ermitteln Call zGetFolderInfo(nFolder, folder_cnt, file_cnt) ' Anzahl Gesamt-Ordner folder_cnt = folder_cnt + nFolder.SubFolders.Count ' Anzahl Gesamt-Dateien file_cnt = file_cnt + nFolder.Files.Count ' Folder-Objekt "zerstören" Set nFolder = Nothing End If Set FSO = Nothing End Sub ' Informationen über Unrdordner ermitteln ' ACHTUNG REKURSIV! Private Sub zGetFolderInfo(ByVal nFolder As Folder, _ ByRef folder_cnt As Long, ByRef file_cnt As Long) Dim nSubFolder As Folder For Each nSubFolder In nFolder.SubFolders ' Hier wird die Funktion rekursiv aufgerufen! Call zGetFolderInfo(nSubFolder, folder_cnt, file_cnt) ' Anzahl Unterordner aktualisieren folder_cnt = folder_cnt + nSubFolder.SubFolders.Count ' Anzahl Dateien aktualisieren file_cnt = file_cnt + nSubFolder.Files.Count Next End Sub ' Skalierte Darstellung der Bytes in der entsprechend ' best darstellbaren Größenangabe Private Function Bytes2String(Bytes As Currency) As String Dim EinheitName As Variant Dim EinheitFormat As Variant EinheitName = Array("Byte", "Byte", "Byte", "KB", _ "KB", "KB", "MB", "MB", "MB", "GB", "GB", "GB", "TB", "TB", "TB") EinheitFormat = Array("0", "0", "0", "0.00", "0.0", _ "0.0", "0.00", "00.0", "0.0", "0.00", "0.0", "0.0", "0.00", _ "0.0", "0.0") Dim i As Integer i = Int(Log10(Bytes)) Bytes2String = Format$(Bytes / 1024 ^ Int(i / 3), _ EinheitFormat(i)) & " " & EinheitName(i) End Function Static Function Log10(X As Currency) As Currency If X = 0 Then Log10 = 0 Else Log10 = Log(X) / Log(10#) End If End Function Beispiel Dim file_cnt As Long Dim folder_cnt As Long Dim folder_size As Currency Dim sFolderPath As String Screen.MousePointer = vbHourglass sFolderPath = "c:\windows" GetFolderInfo sFolderPath, folder_cnt, _ file_cnt, folder_size lblInfo(0).Caption = Bytes2String(folder_size) lblInfo(1).Caption = CStr(folder_cnt) lblInfo(2).Caption = CStr(file_cnt) Screen.MousePointer = vbNormal Dieser Tipp wurde bereits 27.884 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |