wenn Datei und Ordnername unterschiedlich

  • VBScript

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von MemoAnMichSelbst.

    wenn Datei und Ordnername unterschiedlich

    Hallo,

    ich suche nach hilfe bei einer Automatisierung via vbs.

    in einem Ordner liegen zahlreiche PDF Dateien, die mit einem 4-5 Stelligen individuellen Zahlencode bezeichnet sind. ZB 9854.pdf. Dazu gibt es in diesem Ordner Unterordner, die die selbe individuelle Bezeichnung haben.

    Ich würde gerne wissen ob es zu jedem Ordner die entsprechende Datei gibt. Am besten wäre es, wenn man zu Beginn den "überordner" auswählt. Dann verglichen wird, ob es zu allen Ordnern auch ein PDF gibt und abschließend eine msg Box erscheint bei welchen Ordner kein PDF gefunden wurde.

    Kann mir hier jemand helfen ?

    Wäre sehr dankbar.... :(
    Da haben wir eine kleine, aber lösbare Zwickmühle.
    So wie ich das sehe, erwartest Du ein fertiges kleines Tool oder möchtest Du gern mitarbeiten und lernen?
    Ersteres wäre kein Problem, wird hier aber nicht so gern gesehen und wäre dann wahrscheinlich im "Marktplatz" besser aufgehoben.
    Wenn Du mitmachen möchtest, wie schätzt Du Deine Kenntnisse ein?
    Meine Kenntnisse sind eher schwach und wenn hab ich nur in VB ein paar Sachen auf die Beine gestellt. Interesse hätte ich aber schon.
    Dennoch hast du vielleicht recht mit dem Marktplatz. Vielleicht versuche ich es mal dort. Wenn dabei nichts rumkommen sollte, oder
    es zu teuer werden sollte, würde ich gerne auf das Angebot zurückkommen.

    Vielen Dank schon mal
    Also...
    Du brauchst im Grunde nur "System.IO.DirectoryInfo"
    Das kannst dir ja mal anschauen (wenn es VB und nicht VBS sein kann).
    DirectoryInfo hat die Möglichkeit mit "GetFiles" nach Dateien in einem anzugebenen Ordner zu suchen.
    In deinem Fall wäre der Filter *.PDF mit der Info "TopDirectoryOnly" (damit nur die Dateien im Ordner und nicht auch die Unterordnet gefunden werden.
    Soweit richtig?

    Wenn ja, kannst du mit System.IO.Directory.Exists prüfen ob ein Order mit dem Namen der gefundenen Datei existiert.
    Kannst du soweit folgen?

    EDIT:
    Fraglich ist noch... Was willst du mit der Information tun?
    Fehlende Ordner anlegen lassen? Jedes mal ne Meldung hochpoppen lassen? (könnte je nach Menge sehr nervig sein) Ne Liste erstellen..?

    Spoiler anzeigen

    Ich habe auf einer Windows-Form mit dem Namen Form1 (standard) einen Button mit dem Namen Button1 (standard) eingefügt. Das ist der Quellcode. Dieser durchsucht den Ordner C:\Temp

    VB.NET-Quellcode

    1. 'Import von System.IO damit es nicht immer geschrieben werden muss
    2. Imports System.IO
    3. Public Class Form1
    4. 'Wenn der Button1 (der auf der Form existieren muss) gedrückt wird, wird folgender Code ausgeführt.
    5. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    6. 'Aufruf der Suchprozedur für den Ordner "C:\Temp"
    7. Ordnersuche("C:\Temp")
    8. End Sub
    9. ''' <summary>
    10. ''' Durchsuchen eines vorgegebenen Ordners nach PDF Dateien. Ausgabe in Ergebnisse.csv
    11. ''' </summary>
    12. ''' <remarks></remarks>
    13. Private Sub Ordnersuche(ByVal Pfad As String)
    14. 'Zuallererst erstellen wir eine DirectoryInfo für den Ordner.
    15. Dim di As New DirectoryInfo(Pfad)
    16. 'Wir müssen den Ordnernamen anhand der Datei ermitteln und
    17. 'zwischenspeichern
    18. Dim OrdnerName As String = ""
    19. 'Erstellen eines StreamWrites mit Namen SW zur Ausgabe
    20. 'der nicht gefundenen Ordner in einer "Ergebnisse.csv"
    21. 'Ergebnisse.csv liegt hier im C:\Temp
    22. Using sw As New StreamWriter(Path.Combine(di.FullName, "Ergebnisse.csv"))
    23. 'Mit For Each den Ordner nach PDF-Dateien durchsuchen
    24. For Each fi As FileInfo In di.GetFiles("*.pdf", SearchOption.TopDirectoryOnly)
    25. 'FileInfo ist etwas, womit du Informationen von den
    26. 'gefundenen Dateien auslesen kannst.
    27. 'Pro Durchlauf der Schleife ist fi eine neue gefundene Datei
    28. 'Ermitteln des Ordnernamens. Auslesen des Dateinamens und entfernen
    29. 'von .pdf
    30. OrdnerName = fi.Name.Replace(".pdf", "")
    31. 'Prüfen ob der Ordner (zusammengesetzt aus dem Ordner aus di und
    32. 'den ermittelten OrdnerName) existiert
    33. If Not Directory.Exists(Path.Combine(di.FullName, OrdnerName)) Then
    34. 'Wenn der Ordner nicht existiert, schreiben des Namens in
    35. 'Ergebnisse.csv
    36. sw.WriteLine(OrdnerName)
    37. End If
    38. Next
    39. 'Suche beendet
    40. End Using
    41. 'Ende der StreamWriter-Nutzung
    42. End Sub
    43. End Class​
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

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