Auswertung einer Datei mit Speedtests

  • Hallo,

    ich muss mehrere Dateien mit Speedtest auswerten und würde mir gerne ein Autoit Script schreiben welches mir das Leben erleichtert.
    Leider bin ich beim Punkt StringRegExp (was hoffentlich die korrekte Lösung ist) an meine grenzen gestoßen.

    Die Dateien beinhaltet 100 erte von diesen Einträgen:


    Für mich Wichtig sind nur das Datum der Upload und der Download.
    Ich habe das Script soweit hinbekommen das die Datei ausgelesen wird und ich später die Ergebnisse in gekürzter Form weiterverwenden kann (wieder in eine Datei schreiben bzw. wenn es geht in eine MySql legen).

    $dat = StringRegExp(FileRead('speedtest.txt'), '' & 'Datum:' & '.', 3)
    $down = StringRegExp(FileRead('speedtest.txt'), '' & 'Download:' & '.', 3)
    $up = StringRegExp(FileRead('speedtest.txt'), '' & 'Upload:' & '.', 3)

    Diese Zeilen hauen mir auch jedes Datum Download und Upload in das Array aber eben nicht das worauf es ankommt.
    Kann mir da jemand den Schups in die richtige Richtung geben?

    Danke im voraus an alle :)

    Einmal editiert, zuletzt von Sukkurashu (19. Februar 2014 um 12:42)

  • Wie wäre es damit?

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    $sFilePath = @ScriptDir & "\speedtest.txt"
    $sData = FileRead($sFilePath)

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

    $aDate = StringRegExp($sData, "Datum: (.+)", 3)
    $aDown = StringRegExp($sData, "Download: (.+)", 3)
    $aUp = StringRegExp($sData, "Upload: (.+)", 3)

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

    _ArrayDisplay($aDate, "Daten")
    _ArrayDisplay($aDown, "Download")
    _ArrayDisplay($aUp, "Upload")

    [/autoit]


    Du kannst bestimmte Ergebnisse des Patternsmit mit "()" zu einer Gruppe zusammenfassen. Dadurch erscheint pro Match nur der Inhalt der Klammern im Ergebnis Array.

  • Das kannst du auch per Regexp machen. Du musst nur das Mbit/s in das Pattern hinter den auszulesenden Teil schreiben.

    Spoiler anzeigen
    [autoit]

    $aDate = StringRegExp($sData, "Datum: (.+)", 3)
    $aDown = StringRegExp($sData, "Download: (.+) Mbit/s", 3)
    $aUp = StringRegExp($sData, "Upload: (.+) Mbit/s", 3)

    [/autoit]
  • Ok :)

    Ich hatte das jetzt etwas uneleganter gelöst :)


    For $i = 0 To UBound($aDown) - 1
    $aDown[$i] = StringReplace($aDown[$i], ' Mbit/s', '')
    Next
    $aUp = StringRegExp($sData, "Upload: (.+)", 3)
    For $i = 0 To UBound($aUp) - 1
    $aUp[$i] = StringReplace($aUp[$i], ' Mbit/s', '')
    Next