Hallo Liebes Forum ,
Ich hänge leider an einem Skript und wollte fragen ob Ihr evtl mir helfen könntet.
Ich habe eine Tabelle, habe diese hier als Beispiel erstellt : example.csv
Ich möchte nun erst die Gerätenamen vergleichen, falls ein gleichnamiges Gerät gefunden wird soll die Entstehungszeit beider Geräte überprüft werden,
Innerhalb von 300sekunden(5min) , sollen dann die doppelten Einträge entfernt werden.
In der neunen Datei soll dann die Anzahl der gefunden doppelten innerhalb der l (5min grenze) gefundenen Einträge stehen.
Hier ist mein Beispiel Skript leider habe ich es bisher noch nicht hinbekommen, das es richtig funktioniert.
#include <MsgBoxConstants.au3>
#include <array.au3>
#include <String.au3>
#include <File.au3>
#include <Date.au3>
Global $vTemp
$file_example = 'example.csv'
example( $vTEMP, $file_example )
Func example( byref $vArray,$file = '' )
Local $i_ = 0 ;anzahl an bearbeitete
Local $date_1, $date_2, $iunterschied
Local $tgereat_1, $tgereat_2, $tage
_FileReadToArray($file, $vArray, 0, ';')
IF @Error Then
ConsoleWrite('Fehler _FileReadToArray: ' &@error& @CRLF)
Exit
EndIf
For $i = UBound($vArray) - 1 To 2 Step -1
$tgereat_1= $vArray[$i][0]
$tgereat_2= $vArray[$i -1][0]
$date_1= $vArray[$i][1]
$date_2= $vArray[$i -1][1]
If $tgereat_1 = $tgereat_2 Then
$date_1= _GerToCalc($date_1)
$date_2 = _GerToCalc($date_2)
$iunterschied = _DateDiff('s', $date_2, $date_1)
;~ $tage = $iunterschied / 86400
If $iunterschied <= 300 Then
$i_ = $i_ + 1
ConsoleWrite('DIFF:'&@TAB & $iunterschied &@TAB &$tgereat_1 &'<->'&@TAB & $tgereat_2 & @CRLF & $date_1 &'-' & $date_2 & @CRLF)
ConsoleWrite('Doppelten Eintrag inerhalb von 5min gefunden, deshalb wird dieser übersprungen.'& @CRLF)
$temp = $tgereat_1 & ';' & $date_1 & ';' & 'anzahl inerhalb 5min'& ';' & $i_ & ';'&@CRLF
$i -1
FileWrite('teeeest.csv', $temp )
EndIf
ElseIf $tgereat_1 <> $tgereat_2 Then
$i_ = 1
$temp = $tgereat_1 & ';' & $date_1 & ';'&'anzahl innerhalb 5min'& ';' & $i_ & ';'&@CRLF
FileWrite('teeeest.csv', $temp )
EndIf
Next
endFunc
Func _CalcToGer(ByRef $sDate)
Return StringRegExpReplace($sDate, '(\d{4})/(\d{2})/(\d{2}) (.+)', '$3.$2.$1 $4')
EndFunc ;==>_CalcToGer
Func _GerToCalc(ByRef $sDate)
Return StringRegExpReplace($sDate, '(\d{2})\.(\d{2})\.(\d{4}) (.+)', '$3/$2/$1 $4')
EndFunc ;==>_GerToCalc
Alles anzeigen
Quelldatei : example.CSV
1-G;10/10/2022 00:10:55
2-G;10/10/2022 00:12
3-G;10/10/2022 00:13
1-G;10/10/2022 00:13:12
4-G;10/10/2022 00:14
1-G;10/10/2022 00:14:00
5-G;10/10/2022 00:14
6-G;10/10/2022 00:14
7-G;10/10/2022 00:14
1-G;10/10/2022 00:20:00
Alles anzeigen
So sollte das Endergebnis aussehen :
als CSV
1-G;10.10.2022 00:10:55;anzahl innerhalb 5min;3;
7-G;10.10.2022 00:14 ;;anzahl innerhalb 5min;1;
6-G;10.10.2022 00:14 ;anzahl innerhalb 5min;1;
5-G;10.10.2022 00:14 ;anzahl innerhalb 5min;1;
4-G;10.10.2022 00:14 ;anzahl innerhalb 5min;1;
3-G;10.10.2022 00:13 ;anzahl innerhalb 5min;1;
1-G;10.10.2022 00:20 ;anzahl innerhalb 5min;1;
Edit : habe das Endergebnis hier angepasst,
das zusätzliche Datum das mit drinnen stand hat hier im Beispiel irritiert, das war aus meiner Original datei.