64681
Goto Top

Zeitdifferenz berechnen

Hallo,

ich habe zwei Logfiles. In beiden stehen Uhrzeiten:

Auszug:

13:52:10,25
13:54:45,67
13:57:06,42


Nun möchte ich eine Batchdatei, die folgendes macht:

1. 1. Zeile des Logfiles A einliest und von der 1. Zeile des Logfiles B abzieht.
2. 2. Zeile des Logfiles A einliest und von der 2. Zeile des Logfiles B abzieht.
...
Bis zum Ende der Datei.

Die Ergebnisse sollen dann in eine Datei dauer.log gespeichert werden.

Kenne mich nicht so gut aus bei Batch-Programmierung. Kann mir da einer helfen?
Div
Jollstein

Content-Key: 88328

Url: https://administrator.de/contentid/88328

Printed on: April 19, 2024 at 19:04 o'clock

Member: bastla
bastla May 23, 2008 at 13:46:49 (UTC)
Goto Top
Hallo Jollstein!

Unter Zuhilfenahme von etwas (temporärem) VBS etwa so:
@echo off & setlocal
set "LogA=D:\LogA.txt"  
set "LogB=D:\LogB.txt"  
set "Dauer=D:\Dauer.txt"  

set "D=%temp%\Dauer.vbs"  
echo Set args=WScript.Arguments>%D%
echo Set fso=CreateObject("Scripting.FileSystemObject")>>%D%  
echo TA=Split(fso.OpenTextFile(args(0)).ReadAll,vbCrLF)>>%D%
echo TB=Split(fso.OpenTextFile(args(1)).ReadAll,vbCrLF)>>%D%
echo Anz=UBound(TA):If UBound(TB)^<UBound(TA) Then Anz=UBound(TB)>>%D%
echo Set D=fso.CreateTextFile(args(2),True)>>%D%
echo For i=0 To Anz>>%D%
echo 	If TA(i)^<^>"" And TB(i)^<^>"" Then>>%D%  
echo 		TASec=Left(TA(i),8):TAHSec=Mid(TA(i),10)>>%D%
echo 		TBSec=Left(TB(i),8):TBHSec=Mid(TB(i),10)>>%D%
echo 		DSec=CDate(TBSec)-CDate(TASec):If DSec^<0 Then DSec=DSec+1 >>%D%
echo 		DHSec=TBHSec-TAHSec:If DHSec^<0 Then DHSec=DHSec+100:DSec=DateAdd("s",-1,DSec)>>%D%  
echo 		D.WriteLine FormatDateTime(DSec,vbLongTime)^&","^&Right("0"^&CStr(DHSec),2)>>%D%  
echo 	End If>>%D%
echo Next>>%D%
echo D.Close>>%D%
cscript //nologo %D% "%LogA%" "%LogB%" "%Dauer%"  
del %D%

Grüße
bastla

[Edit] Berücksichtigung eines Tageswechsels zwischen der Zeit in "Log A" und "Log B" hinzugefügt [/Edit]
Member: Biber
Biber May 25, 2008 at 12:52:42 (UTC)
Goto Top
Moin Jollstein,

kannst Du mit bastlas Lösung leben (bzw. kannst/darfst Du VBS-Schnipsel verwenden)?

Weil.... natürlich könnte man/frau auch mit reinem Batch die Start- und Endeuhrzeit in Stunden und Minuten zerlegen und umrechnen mit einem Dutzend Zeilen...
..aber dieser Codeschnipsel hätte schon etwas Rührendes, weil eben im Batch die Möglichkeiten zur Datumsberechnung fehlen.

Deshalb wird in diese Richtung sicherlich nur dann noch jemand entwickeln, wenn es wirklich absolut unabwendbar ist.

Gib bitte deshalb vorher mal Rückmeldung.

Danke
Biber
Mitglied: 64681
64681 May 26, 2008 at 06:31:43 (UTC)
Goto Top
Hallo bastla,

sorry für die späte Antwort.
Zu deinem Code: Perfekt. Dankeschön, das funktioniert. face-smile
Eine kleine Frage hätte ich noch:

An welcher Stelle könnte man den Code abändern, wenn man noch zusätzlichen Text in einer Kommandobox ausgeben will? Momentan schließt sich die Box nach dem korrekten Ausführen...

Viele Grüße
Jollstein
Mitglied: 64681
64681 May 26, 2008 at 06:32:56 (UTC)
Goto Top
Hallo Biber,

also der bastla hat mir da schon geholfen. Der Code reicht mir. Aber danke für die Hilfe.

Viele Grüße
Jollstein