Zahlen aus Textdatei in Batch vergleichen
Hi,
ich habe schon stundenlang im Internet gesucht, konnte aber nichts Passendes finden.
Ich habe eine Textdatei "time.log". In diese Datei werden 4x 4-stellige Zahlen geschrieben (1 Zahl pro Zeile).
Jetzt möchte ich diese 4 Zahlen miteinander vergleichen. Im Idealfall sollten diese Zahlen komplett übereinstimmen.
Sollte aber eine, oder mehrere, dieser Zahlen um mehr als 2 von den anderen Zahlen abweichen, soll eine Fehlermeldung ausgegeben werden.
Wenn sie komplett übereinstimmen, oder um weniger als 2 abweichen, soll eine Meldung erscheinen, dass alles in Ordnung ist.
Ich hoffe mir kann jemand helfen.
Vielen Dank im Voraus
LG
ich habe schon stundenlang im Internet gesucht, konnte aber nichts Passendes finden.
Ich habe eine Textdatei "time.log". In diese Datei werden 4x 4-stellige Zahlen geschrieben (1 Zahl pro Zeile).
Jetzt möchte ich diese 4 Zahlen miteinander vergleichen. Im Idealfall sollten diese Zahlen komplett übereinstimmen.
Sollte aber eine, oder mehrere, dieser Zahlen um mehr als 2 von den anderen Zahlen abweichen, soll eine Fehlermeldung ausgegeben werden.
Wenn sie komplett übereinstimmen, oder um weniger als 2 abweichen, soll eine Meldung erscheinen, dass alles in Ordnung ist.
Ich hoffe mir kann jemand helfen.
Vielen Dank im Voraus
LG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 279391
Url: https://administrator.de/forum/zahlen-aus-textdatei-in-batch-vergleichen-279391.html
Ausgedruckt am: 07.04.2025 um 09:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo yspke24, willkommen im Forum.
Teste mal folgendes:
Grüße
rubberman
Teste mal folgendes:
@echo off &setlocal
set "txtfile=test.txt"
:: Vier Zeilen einlesen
setlocal EnableDelayedExpansion
<"!txtfile!" (
set /p "num1="
set /p "num2="
set /p "num3="
set /p "num4="
)
:: Bubblesort
for /l %%i in (1 1 3) do (
for %%j in ("num1,num2" "num2,num3" "num3,num4") do for /f "tokens=1,2 delims=," %%A in (%%j) do (
if !%%A! gtr !%%B! (
set /a "tmpn=%%A, %%A=%%B, %%B=tmpn"
)
)
)
echo sortiert: %num1% %num2% %num3% %num4%
:: Differenz zw. größtem und kleinstem Wert
set /a "diff=num4-num1"
echo Differenz: %diff%
:: Prüfung
if %diff% gtr 2 (
echo Fehler
) else (
echo OK
)
pause
Grüße
rubberman
Hallo yspke,
einen Einwand habe ich aber noch. So wie du schreibst, handelt es sich um Uhrzeiten. Zwischen bspw. 1059 und 1100 gibt es rechnerisch eine Differenz von 41 und nicht etwa 1. Du musst also genau aufpassen, wann deine Daten geschrieben werden, damit du diesen Fehler ausschließen kannst. Ansonsten funktioniert das nicht.
Grüße
rubberman
einen Einwand habe ich aber noch. So wie du schreibst, handelt es sich um Uhrzeiten. Zwischen bspw. 1059 und 1100 gibt es rechnerisch eine Differenz von 41 und nicht etwa 1. Du musst also genau aufpassen, wann deine Daten geschrieben werden, damit du diesen Fehler ausschließen kannst. Ansonsten funktioniert das nicht.
Grüße
rubberman

Oder für die Powershell-Fraktion sähe das so aus:
Gruß grexit
$zeiten = (gc 'C:\time.log') | %{[datetime]"$($_.Substring(0,2)):$($_.Substring(2,2))"} | sort
if ($zeiten[3] -gt $zeiten.AddMinutes(2)){
write-host "Achtung eine Zeit überschreitet das Soll von 2 Minuten" -ForeGroundColor Yellow
}else{
write-host "Alle Zeiten im soll." -ForegroundColor Green
}