Dateien zusammenfassen mit variablem Dateinamen

  • VBScript

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Dateien zusammenfassen mit variablem Dateinamen

    Guten Morgen,

    ich habe in einem Ordner mehrere Textdateien, die ich mit VBS zu einer Datei zusammenfassen möchte. Das klappt auch wunderbar (Code folgt unten). Was mich noch stört ist der Dateiname, den ich gerne variabel gestalten möchte. Der Dateiname jeder Textdatei endet mit dem Datum, an dem sie erstellt wurde, im Format "JJMMTT". Mehrere Dateien für einen Tag kommen nicht vor. Ich würde nun gerne das Datum der ersten Datei und der letzten Datei (alphabetisch) für die neu erstellte, zusammengefasste Datei verwenden. Wenn ich z.B. die Dateien "abc_200101.txt", "abc_200102.txt" und "abc_200103.txt" habe, sollte die neue Datei "abc_200101_200103.txt" heißen.
    Habe schon gegoogelt, bin aber leider nicht fündig geworden.

    Hier mein bisheriger Code:

    Quellcode

    1. Option Explicit
    2. Dim FSO, File, Ordner, Datei, QuellDatei, ZielDatei, Inhalt
    3. Set FSO=CreateObject( "Scripting.FileSystemObject")
    4. Set File = FSO.CreateTextFile("C:\temp\abc_000000.txt")
    5. file.close
    6. set file = nothing
    7. Set Ordner = FSO.GetFolder("C:\temp\txt")
    8. Set ZielDatei = FSO.OpenTextFile(Ordner & "\abc_000000.txt", 8) 'ForAppending
    9. On Error Resume Next
    10. For Each Datei In Ordner.Files
    11. Set QuellDatei = FSO.OpenTextFile(Datei.Path, 1) 'ForReading
    12. Inhalt = QuellDatei.ReadAll
    13. ZielDatei.Write Inhalt
    14. QuellDatei.Close
    15. Next
    16. ZielDatei.Close


    Für Hilfe und Tipps wäre ich sehr dankbar :)

    Matthias
    Per Split-Funktion holst Du Dir erst den Teil vor dem _, also abc, danach mit dem Resttext den Teil vor dem ., also 200102 und 200103
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Verwende eine Variable MinValue (=999999) und eine MaxValue (=000000).
    Ziehe aus jedem Dateiname das Datum.
    Ist es kleiner als MinValue, überschreibe MinValue
    Ist es größer als MaxValue, überschreibe MaxValue.
    Am Ende der Schleife hast du den kleinsten und größten Wert.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --