Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1880to1884
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateien suchen, eingeschränkt

Dateien suchen, eingeschränkt
27.04.2022 09:28:03
Tobi@s
Hallo,
gegeben sei eine Festplatte X, auf der ein oder mehrere "Hauptordner" ("Fälle") sind.
In diesen Hauptordnern gibt es mehrere Unterordner, in denen wieder Unterordner stecken (können - gern 5 oder 8 Ebenen). Jedoch befindet sich in der ersten Unterebene ein (Unter)Ordner, der NUR Dateien enthält (keine weiteren Unterordner). Diese Dateien haben den Dateityp "*.e01" (die Ziffern können fortlaufend weiter gehen, aber die "01" existiert mind. 1x).
Gibt es nur einen Fall, kann es auch sein, dass dieser "Unterordner" direkt auf der obersten Festplatten-Ebene auch liegt (mit weiteren Ordnern, die Unterordner enthalten).
Nun sollen alle Dateien mit dem Format "*.e01" ausgelesen werden und aufgelistet.
Dazu habe ich auf eine Funktion "Tree" aus dem Netz zugegriffen, die alle Unterordner in jeder Ebene rekursiv durchsucht.
Das .. dauert aber natürlich und ist nicht notwendig.
Ich hätte gern, dass das Programm (entweder auf oberster Ebene, wenn nur ein Fall ist) den Ordner mit den Dateien findet, ausliest und beendet. Oder - wenn meherere "Fälle" (Hauptordner) sind, das er in jeden Hauptordner geht, den Ordner findet, wo die Dateien drin sind, die ausliest, aber ... die anderen Unterordner ignoriert sondern gleich eben wieder in die oberste Ebene geht um den nächsten "Fall" (Hauptordner) zu durchsuchen.
Irgendwie fehlt mir da aber der Gedanke, wie ich das hinbekomme, dass, wenn er eben diesen einen Ordner gefunden hat, dann "zurück" springt und den Rest ignoriert.
Es würde auch reichen, wenn ich in einem Ordner KEINE "*.e01"-Dateien finde und sage "wenn im Ordner keine sind, dann such auch nicht weiter in den Unterordnern IN diesem Ordner" - außer, ich hab eben, dass ich in der obersten Ebene mehrere Fall-Ordner habe.
Hat jemand irgendeinen klugen Gedanken für mich wie ich das umsetzen kann?

Sub Tree(ByVal objFolder As Object, ByVal objFSO As Object, Ebene As Single, schalter As Boolean)
Dim objSubFolder As Object
On Error Resume Next
Dim Datei As Variant
Dim Typ As String
Dim gefunden As Boolean
Dim Ordner As String
'Lesen Dateien auf der Ebene
For Each Datei In objFolder.Files
Application.StatusBar = "Aktueller Ordner: " & objFolder
Debug.Print "Aktuelle Ebene: " & Ebene
Debug.Print "Dateien finden: ..."
Debug.Print "Ordner: " & objFolder
Debug.Print " "
Typ = LCase(objFSO.getExtensionName(Datei))
If Left(Typ, 1) = "e" And IsNumeric(Right(Typ, 2)) Then
Call Liste_schreiben(Datei, objFolder) 'füllt ein Array, was hinterher weiter verarbeitet wird
End If
Next
'Lesen der UNTERebene
For Each objSubFolder In objFolder.subfolders
Debug.Print "Aktuelle Ebene: " & Ebene
Debug.Print "Unterebene: " & objSubFolder
Debug.Print " "
Application.StatusBar = "Aktueller Ordner: " & objSubFolder
If InStr(1, objSubFolder, "RECYCLE") = 0 Then Call Tree(objSubFolder, objFSO, Ebene + 1, schalter)
Next
End Sub

aufgerufen wird es im Hauptprogramm mit

Pfad = Pfad_Wählen("Verzeichnis der *.e01-Dateien") 'weiteres Unterprogramm, was ein Menü zum Pfad auswählen aufruft
Set objFSO = CreateObject("scripting.filesystemobject")
Set objFolder = objFSO.GetFolder(Pfad)
Call Tree(objFolder, objFSO, 1, False) '1 = Ebene, False = schalter
Set objFolder = Nothing
Set objFSO = Nothing
mit dem Schalter wollte ich das irgendwie eben hinbekommen, dass der dann "zurück springt" wenn Dateien gefunden wurden.
Tobi@s

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien suchen, eingeschränkt
27.04.2022 09:37:20
Oberschlumpf
Hi,
prüf doch einen Ordner bei der 1. Prüfung, ob überhaupt .exx Dateien enthalten sind - ganz einfach mit der Endung .e01, weil diese ja immer enthalten ist, wie du schreibst.

If Dir(DeinPfad & "\*.e01") = "" Then EXIT diesen Ordner
...soll bedeuten:
Wenn im gerade geprüften Ordner eine Datei mit Endung ".e01" - nicht - enthalten ist, dann beende sofort die weitere Prüfung und mach mit dem nächsten Ordner weiter.
Hilfts?
Ciao
Thorsten
AW: Dateien suchen, eingeschränkt
27.04.2022 10:46:14
Tobi@s
Hallo jan,
so richtig hilft es mir nicht. Als ich dir aber eine ausführliche Antwort schreiben wollte, kam ich auf die Idee die Rekursion einzuschränken, dass er halt nur in die nächste Rekursion gehen soll wenn die Ebene kleiner 3 sein soll.
Programm ausgeführt und nach 2 Sekunden war er fertig statt vorher nach 5 Minuten.
Danke dennoch :-)
Anzeige
ERLEDIGT - AW: Dateien suchen, eingeschränkt
27.04.2022 10:46:55
Tobi@s
oT

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige