Ordner suchen, aber einen Ordner ignorieren (wenn vorhanden)

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von JackCimberly.

    Ja, der zeigt mir kein Fehler an, dank Imports System.Linq.

    Ab hier liegt das Problem. Ich weiß nicht, wie ich an die Ergebnisse komme (z.B. MessageBox.Show()).

    VB.NET-Quellcode

    1. Dim folders = My.Computer.FileSystem.GetDirectories("UnbekannterOrdner", FileIO.SearchOption.SearchAllSubDirectories, "Ordner2").ToList
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Oh, das muss ich wohl übersehen haben. Sorry.

    Ja, die enthalten die Sachen, die ich benötige.

    Nachdem ich den unbekannten Ordner ermittelt habe, kann ich z.B. auf eine Datei zugreifen.
    Nutze aber auch gleich den ermittelten Pfad, um Sicherungen anzulegen.

    Post #06

    Kann ja mal zusammenfassen:

    1. Ordner1 -> UnbekannterOrdner -> Ordner2
    2. Ordner1 -> UnbekannterOrdner -> Ordner3 -> Ordner2

    Den
    UnbekannterOrdner ermittel ich mit - funktioniert tadellos:

    VB.NET-Quellcode

    1. For Each exFolder In My.Computer.FileSystem.GetDirectories("OrdnerIrgendwas ", FileIO.SearchOption.SearchAllSubDirectories, "Ordner1")
    2. 'hier habe ich ein Code, der auf eine Datei in Ordner2 zugreift und ausliest
    3. 'danach füge ich den Nicknamen aus der Datei und exFolder in eine Listbox
    4. Next


    Das klappt zu 1.), aber wenn 2.) auftritt, dann klappt das nicht, da die eine Datei in Ordner3 -> Ordner2 nicht vorhanden ist. Demzufolge wird der Fehler ausgespuckt, da diese Datei nicht vorhanden ist.

    Meine Idee wäre anfangs gewesen, den Code zu nutzen:

    VB.NET-Quellcode

    1. For Each exFolder In My.Computer.FileSystem.GetDirectories("OrdnerIrgendwas ", FileIO.SearchOption.SearchAllSubDirectories, "Ordner1")
    2. Next exFolder


    Hier wird mir nur ein Ergebnis ausgespuckt, obwohl mehrere vorhanden sind.

    VB.NET-Quellcode

    1. For Each ordner As String In My.Computer.FileSystem.GetDirectories(Pfad, FileIO.SearchOption.SearchAllSubDirectories, "10190")
    2. Next ordner
    3. MessageBox.Show(ordner)


    Dann könnte ich abfragen, ob dieser Ordner (2.)) vorhanden ist (IF) .... wenn der vorhanden ist, dann das Ergebnis löschen.
    Danach in Listbox.
    Komisch zu erklären ...

    Thema: Haltepunkt .... sry, verstehe das einfach nicht. Kleiner Tipp? Aber kein C&P - will ja was lernen. :)
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „JackCimberly“ ()

    Ich hab´s:

    VB.NET-Quellcode

    1. Dim i As Integer
    2. Dim ItemList As New ArrayList()
    3. For Each ordner As String In My.Computer.FileSystem.GetDirectories(Pfad, FileIO.SearchOption.SearchAllSubDirectories, "Ordner2")
    4. ItemList.Add(ordner)
    5. If ordner.EndsWith("Ordner3\Ordner2") Then
    6. 'MessageBox.Show("vorhanden " & ordner)
    7. ItemList.Remove(ordner) 'entfernt diesen Eintrag - falscher Pfad
    8. End If
    9. Next
    10. For i = 0 To ItemList.Count - 1
    11. MsgBox(ItemList.Item(i))
    12. 'Auslesen der Datei
    13. 'Add Listbox
    14. Next


    Danke an ErfinderDesRades für die Geduld. (Eigentlich "ErfinderDerGeduld") ;)
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „JackCimberly“ ()

    ArrayList gehört zu den böse Funktionen
    Nimm List(Of String)

    Und VB-Tag richtig benutzen

    Und überflüssige Leerzeilen sind mehr als überflüssig: sie schädigen die Lesbarkeit.

    Und wennmöglich ForEach verwenden - das liefert anschaulicheren Code als For i .

    Und warum addest du ein item erst, wenndes u.U. direkt danach wieder removen tust? lieber garnet erst adden!

    Herauskommen könnte folgendes:

    VB.NET-Quellcode

    1. Dim ItemList As New List(Of String)
    2. For Each ordner In My.Computer.FileSystem.GetDirectories( _
    3. Pfad, FileIO.SearchOption.SearchAllSubDirectories, "Ordner2")
    4. If Not ordner.EndsWith("Ordner3\Ordner2") Then
    5. ItemList.Add(ordner)
    6. End If
    7. Next
    8. For Each itm In ItemList
    9. MsgBox(itm)
    10. Next


    das wichtigste: Option Strict On!

    PS: Das mit dem Haltepunkt haste immer noch nicht, oder? Weil damit könnteste dir die Messagebox-Schleife sparen, da du die Korrektheit der Items viel besser direkt in der IDE überprüfen kannst: dieses Buch Lesen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Oh. Böse Funktion.
    Danke für den Hinweis. Habe ich aber aus einem Buch. ^^

    Stimmt, hast recht. Schon vor dem Adden, removen.
    Aber meine Grundidee habe ich ja damit umgesetzt. :) Nur kompliziert gedacht und umgesetzt, wenn man das doch einfacher haben kann.

    Aber der von Dir vorgeschlagenen Funktion List(Of String) konnte ich nichts anfangen.
    Im Prinzip hat die dieselbe Vorgehensweise, wie ArrayList. Danke.

    VB-Tag: Ja, ick weiß. ;)

    Option Strict: Ist schon bei mir auf "ON". Danke auch hierfür.

    Edit: Haltepunkt - muss ich mir noch erlesen und kapieren.
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren

    JackCimberly schrieb:

    Oh. Böse Funktion.
    Danke für den Hinweis. Habe ich aber aus einem Buch. ^^
    denkichmir, das du das aus einem Buch hast - solche Bücher gibts einige - das von Galileo ist das traurig-berühmteste.
    Deshalb: dieses Buch Lesen - das ist nicht nur gefasel

    Aber der von Dir vorgeschlagenen Funktion List(Of String) konnte ich nichts anfangen.
    dassis schlimm. Übrigens ist List(Of T) nicht eine Funktion, sondern eine Klasse

    Im Prinzip hat die dieselbe Vorgehensweise, wie ArrayList. Danke.
    stimmt. :thumbsup:
    Nur die Items einer ArrayList haben den eigentlich unbrauchbaren Typ Object, während die Items einer List(Of String) halt strings sind.

    Edit: Haltepunkt - muss ich mir noch erlesen und kapieren.
    Jau. Als einstieg: Einfach mal im Code an einer interessanten Stelle F9 drücken.

    Wie gesagt: nur der Einstieg - nachlesen musste trotzdem, sonst findest du evtl. das LokalFenster nicht, wo du nachgucken kannst, was in den Items drin ist.

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