Ordnergröße + Unterordner + Files im Ordner ermitteln

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Confix.npage.de.

    Ordnergröße + Unterordner + Files im Ordner ermitteln

    Guten Tag,
    Hab dieses:
    [VB.NET] Ordnergröße?
    Thema schon gelesen aber dies hat mir leider nicht weiter geholfen
    Ich habe es auch mit vielen For Each Schleifen Probiert aber dies flackerte dann weil ich so 5 Schleifen ineinander hatte, also wollt ich fragen ob ihr mir helfen könnt.
    Ich will die Ordnergröße + alle files + Größe der Unterordner etc. Ermitteln
    Mfg
    Confix
    ganz simple einfach so :

    VB.NET-Quellcode

    1. Dim FolderSize As Long = 0
    2. For Each Datei As String In Directory.GetFiles("DERPfad", "*.*", SearchOption.AllDirectories)
    3. Try
    4. FolderSize += New FileInfo(Datei).Length
    5. Catch ex As Exception
    6. End Try
    7. Next


    EDIT : CODE GEÄNDERT FUNKTIONIERT JETZT :whistling:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Littleboy2009“ ()

    Geht nicht, mein code:

    VB.NET-Quellcode

    1. Private Sub CheckedListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckedListBox2.SelectedIndexChanged
    2. Label7.Text = "0"
    3. Dim größe As Long = 0
    4. For Each Directory In CheckedListBox2.CheckedItems
    5. For Each Datei As String In IO.Directory.GetFiles(Directory, "*.*", IO.SearchOption.AllDirectories)
    6. größe += New IO.FileInfo(Datei).Length
    7. Next
    8. Next
    9. Label7.Text = größe
    10. Label7.Text /= 1000
    11. Label7.Text /= 1000
    12. Label7.Text = Label55.Text & " MB Markiert"
    13. End Sub

    In der CheckedListbox stehen die Ordnernamen und die gecheckten sollen dann zusammengerechnet werden. Habe auch bei größe += New IO.FileInfo ohne + Probiert geht auch nicht
    probiers mal so (hattest nen kleinen Fehler drin bei der For Each Schlaufe "Directory" ^^) :

    VB.NET-Quellcode

    1. Dim größe As Long = 0
    2. For Each Ordner As String In CheckedListBox2.CheckedItems
    3. For Each Datei As String In IO.Directory.GetFiles(Ordner.ToString, "*.*", IO.SearchOption.AllDirectories)
    4. größe += New IO.FileInfo(Datei).Length
    5. Next
    6. Next
    7. Label7.Text = größe / 1024 / 1024 & " MB"

    müsste gehn ^^
    Ich habe eine Methode geschrieben, um die Größe eines Verzeichnisses zu ermitteln.

    VB.NET-Quellcode

    1. Function GetFolderSize(ByVal path As String) As Long
    2. GetSize(path)
    3. Return si
    4. End Function
    5. Dim si As Long = 0
    6. Sub GetSize(ByVal path As String)
    7. Try
    8. Dim di As New IO.DirectoryInfo(path)
    9. For Each file As IO.FileInfo In di.GetFiles
    10. si += file.Length
    11. Next
    12. For Each dire As IO.DirectoryInfo In di.GetDirectories
    13. GetSize(dire.FullName)
    14. Next
    15. Catch ex As Exception
    16. MessageBox.Show(ex.Message)
    17. End Try
    18. End Sub

    Passend dazu, eine Methode, um die passende Si-Vorilbe zu ermitteln (MB, GB, ...)

    VB.NET-Quellcode

    1. Function GetIdealSi(ByVal bytes As Long) As String
    2. Select Case bytes
    3. Case Is > (1024.0 * 1024.0 * 1024.0 * 1024.0)
    4. Return CStr(bytes / 1024 / 1024 / 1024 / 1024) + "TB"
    5. Case Is > (1024.0 * 1024.0 * 1024.0)
    6. Return CStr(bytes / 1024 / 1024 / 1024) + "GB"
    7. Case Is > (1024.0 * 1024.0)
    8. Return CStr(bytes / 1024 / 1024) + "MB"
    9. Case Is > 1024.0
    10. Return CStr(bytes / 1024) + "KB"
    11. Case Is < 1024.0
    12. Return CStr(bytes) + "B"
    13. Case Else
    14. Return CStr(bytes) + "B"
    15. End Select
    16. End Function

    Beispielaufruf:

    VB.NET-Quellcode

    1. MessageBox.Show(GetIdealSi(GetFolderSize("Verzeichnis")))


    Hoffe, konnte helfen :)