vergleichen von 2 .txt Dateinen

  • Hallo,

    ich hoffe hier kann mir geholfen werden... Ich will in der .txt Datei "Daten" nach Namen suchen die in der .txt "gruppen" zu finden ist. Anschließend sollen mir die 4 Zeilen vor dem Treffer ausgegeben werden sollen inklusie dem Treffer.

    Vielen dank schon mal im Voraus.

    mein Quellcode bisher:

    [autoit]


    :einlesen Dateien
    Local $q = FileOpen("C:\Users\admin\Desktop\D.txt")
    Global $iLine = 0, $sLine = '', $iValid = 0
    Local $g = FileOpen("C:\Users\admin\Desktop\gruppen.txt")

    [/autoit][autoit][/autoit][autoit]

    While 1
    $lineq = FileReadLine($q)
    If @error = -1 Then ExitLoop
    FileSetPos($g, 0, 0)
    While 1

    $iLine += 1


    $lineg = FileReadLine($g)
    If @error = -1 Then ExitLoop

    ; sucht nach Variable $lineg in $lineq
    If StringInStr($lineq, $lineg) And Not $iValid Then
    $iValid = -5
    ContinueLoop


    EndIf


    If $iValid Then
    $iValid += 1
    FileWrite("C:\Users\admin\Desktop\ergebnis.txt", $lineq &@CRLF)
    If $iValid = 0 Then ExitLoop

    EndIf
    WEnd

    WEnd

    FileClose($g)
    FileClose($q)

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, @ScriptName, "fertig")

    [/autoit]
  • Hallo und Herzlich Willkommen im Forum ;)

    Also ich habe mal ein kleines "Script" geschrieben:

    [autoit]

    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    $datei_daten = FileReadToArray (@ScriptDir&"\daten.txt")
    $datei_gruppen = FileReadToArray (@ScriptDir&"\gruppen.txt")

    [/autoit][autoit][/autoit][autoit]

    Local $ergebnis_suche
    Dim $datensaetze_ergebnis[0]

    [/autoit][autoit][/autoit][autoit]

    $ergebnis_suche = _ArraySearch ($datei_daten,$datei_gruppen[0])

    [/autoit][autoit][/autoit][autoit]

    _ArrayAdd ($datensaetze_ergebnis,$datei_daten[$ergebnis_suche-4])
    _ArrayAdd ($datensaetze_ergebnis,$datei_daten[$ergebnis_suche-3])
    _ArrayAdd ($datensaetze_ergebnis,$datei_daten[$ergebnis_suche-2])
    _ArrayAdd ($datensaetze_ergebnis,$datei_daten[$ergebnis_suche-1])
    _ArrayAdd ($datensaetze_ergebnis,$datei_daten[$ergebnis_suche])

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay($datensaetze_ergebnis)

    [/autoit]


    Ist halt total Festgehämmert, aber ich hoffe es hilft Dir weiter!

    Habe mir fix 2 Dokumente gemacht mit folgenden Datensätzen:
    daten.txt:
    Markus
    Lukas
    Johannes
    Bernd
    Christian
    Olaf
    Rico
    Martin
    Steffanie
    Marcel

    gruppen.txt:
    Marcel

    und als Ergebnis des Scriptes kommt:
    Olaf
    Rico
    Martin
    Steffanie
    Marcel

    raus.


    Gruß Qu1cks3r

    ~~MBI~~

    _______________________________

    everything is possible with AutoIT

    ___________________________

  • Schreib mal ganz an den Anfang das "#include <Array.au3>".
    Damit Importierst du die UDF's (User Defined Functions).
    Dann sollte das gehen

    Gruß Qu1cks3r

    ~~MBI~~

    _______________________________

    everything is possible with AutoIT

    ___________________________

  • Was ich dir empfehlen würde, arbeite mit der Hilfe-Datei von AutoIt. Da steht alles drin, was man braucht.
    Gerade mit _Array- Geschichten, das sind von den verschiedenen Usern Funktionen, die man mit "#include" einbinden kann ;)

    Gruß
    Qu1cks3r

    ~~MBI~~

    _______________________________

    everything is possible with AutoIT

    ___________________________

  • So wie ich es verstanden habe sollte es so klappen:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $aGroups = FileReadToArray("C:\Users\admin\Desktop\gruppen.txt")
    $iLines = _FileCountLines("C:\Users\admin\Desktop\D.txt")
    $bFound = False

    [/autoit] [autoit][/autoit] [autoit]

    For $y = 0 To Ubound($aGroups)-1
    For $x = 0 to $iLines
    $sDaten = FileReadLine("C:\Users\admin\Desktop\D.txt",$x)
    If StringInStr($sDaten,$aGroups[$y]) Then
    $iErgebnisLine = $x - 4
    $bFound = True
    ExitLoop
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If $bFound Then
    MsgBox(0,"Gefunden!","Die Vierte Zeile über " & $aGroups[$y] & " lautet: " & FileReadLine("C:\Users\admin\Desktop\D.txt",$iErgebnisLine))
    EndIf
    Next

    [/autoit]