Hi,
ich habe eine kleine Sub, welche nur die lesbaren Ordner und Objekte berücksichtigen sollte.
Diese gibt die Anzahl der in einem vorgegebenen Stammordner enthaltenen Unterordner, die Gesamtzahl aller enthaltenen Dateien und in einer Liste alle enthaltenen Dateien zurück.
Diese Sub verwende ich für alle möglichen Aufgaben.
EDIT: Aber ich lasse auch auf dem System-Laufwerk nur das Einlesen von:
Sysdrive:\Benutzer\Öffentlich\Öffentliche Dokumente
Sysdrive:\Benutzer\Öffentlich\Öffentliche Downloads
Sysdrive:\Benutzer\Öffentlich\Öffentliche Bilder
Sysdrive:\Benutzer\Öffentlich\Öffentliche Musik
Sysdrive:\Benutzer\Öffentlich\Öffentliche Videos
und
Sysdrive:\Benutzer\%Benutzername%\Dokumente
Sysdrive:\Benutzer\%Benutzername%\Downloads
Sysdrive:\Benutzer\%Benutzername%\Bilder
Sysdrive:\Benutzer\%Benutzername%\Musik
Sysdrive:\Benutzer\%Benutzername%\Videos
Als Quellordner zu, um Zugriffssperren zu vermeiden.
Diese lese ich mit:
Dim allUsers As String = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.Windows).Replace("Windows", "Users"))
Dim commonDocuments As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)
Dim commonDownloads As String = Path.Combine(allUsers, "Public\Downloads")
Dim commonMusic As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonMusic)
Dim commonPictures As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures)
Dim commonVideos As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonVideos)
und
Dim myDocuments As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim myDownloads As String = IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads")
Dim myMusic As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)
Dim myPictures As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
Dim myVideos As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyVideos)
aus den System-Einstellungen aus.
Mit
werden alle Unterordner durchsucht
Mit
wird nur die Stammebene eingelesen
ich habe eine kleine Sub, welche nur die lesbaren Ordner und Objekte berücksichtigen sollte.
Diese gibt die Anzahl der in einem vorgegebenen Stammordner enthaltenen Unterordner, die Gesamtzahl aller enthaltenen Dateien und in einer Liste alle enthaltenen Dateien zurück.
Diese Sub verwende ich für alle möglichen Aufgaben.
EDIT: Aber ich lasse auch auf dem System-Laufwerk nur das Einlesen von:
Sysdrive:\Benutzer\Öffentlich\Öffentliche Dokumente
Sysdrive:\Benutzer\Öffentlich\Öffentliche Downloads
Sysdrive:\Benutzer\Öffentlich\Öffentliche Bilder
Sysdrive:\Benutzer\Öffentlich\Öffentliche Musik
Sysdrive:\Benutzer\Öffentlich\Öffentliche Videos
und
Sysdrive:\Benutzer\%Benutzername%\Dokumente
Sysdrive:\Benutzer\%Benutzername%\Downloads
Sysdrive:\Benutzer\%Benutzername%\Bilder
Sysdrive:\Benutzer\%Benutzername%\Musik
Sysdrive:\Benutzer\%Benutzername%\Videos
Als Quellordner zu, um Zugriffssperren zu vermeiden.
Diese lese ich mit:
Dim allUsers As String = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.Windows).Replace("Windows", "Users"))
Dim commonDocuments As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments)
Dim commonDownloads As String = Path.Combine(allUsers, "Public\Downloads")
Dim commonMusic As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonMusic)
Dim commonPictures As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures)
Dim commonVideos As String = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonVideos)
und
Dim myDocuments As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim myDownloads As String = IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads")
Dim myMusic As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)
Dim myPictures As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)
Dim myVideos As String = System.Environment.GetFolderPath(Environment.SpecialFolder.MyVideos)
aus den System-Einstellungen aus.
Mit
werden alle Unterordner durchsucht
Mit
wird nur die Stammebene eingelesen
VB.NET-Quellcode
- Private Sub Stammverzeichnis einlesen(verzeichnis As String, searchOption)
- fileList.Clear()
- foldercount = 0
- filecount = 0
- TraverseDirectory(verzeichnis, SearchOption, fileList, foldercount, filecount)
- ' Nach dem Aufruf enthält:
- ' filelist : Liste aller enthaltenen Dateien
- ' Foldercount : Anzahl der enthaltenen Verzeichnisse
- ' Filecount : Anzahl aller enthaltenen Dateien
- End If
- Private Sub TraverseDirectory(ByVal directory As String, ByVal searchOption As SearchOption, ByRef fileList As List(Of String), ByRef folderCount As Integer, ByRef fileCount As Integer)
- Try
- If (searchOption = SearchOption.AllDirectories) Then
- ' Alle Dateien im aktuellen Verzeichnis hinzufügen
- Dim filesInDirectory As String() = IO.Directory.GetFiles(directory)
- fileList.AddRange(filesInDirectory)
- fileCount += filesInDirectory.Length
- ' Anzahl der enthaltenen Ordner erhöhen
- folderCount += 1
- ' Rekursiv die Unterverzeichnisse durchlaufen
- For Each subDirectory As String In IO.Directory.GetDirectories(directory)
- TraverseDirectory(subDirectory, searchOption, fileList, folderCount, fileCount)
- Next
- Else
- ' Nur Dateien im aktuellen Verzeichnis hinzufügen
- Dim filesInDirectory As String() = IO.Directory.GetFiles(directory)
- fileList.AddRange(filesInDirectory)
- fileCount += filesInDirectory.Length
- End If
- Catch ex As System.Exception
- ' Fehlerbehandlung hier
- End Try
- End Sub
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Dideldum“ ()