
64681
23.05.2008, aktualisiert am 26.05.2008
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 88328
Url: https://administrator.de/forum/zeitdifferenz-berechnen-88328.html
Ausgedruckt am: 07.05.2025 um 12:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo Jollstein!
Unter Zuhilfenahme von etwas (temporärem) VBS etwa so:
Grüße
bastla
[Edit] Berücksichtigung eines Tageswechsels zwischen der Zeit in "Log A" und "Log B" hinzugefügt [/Edit]
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]
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
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