Bestimmte Texte in Textfile addieren und substrahieren
Hallo,
habe folgende Frage. Es geht um ein FlexLM Logfile, welches folgendermassen aussieht:
7:56:58 (xx_D) IN: "software" rrrrrrrrrr@xxxxx
7:57:37 (xx_D) OUT: "software" rrrrrrrrrr@xxxxx
7:59:53 (xx_D) OUT: "software" rrrrrrrrrr@xxxxx
8:00:31 (xx_D) OUT: "software" rrrrrrrrrr@xxxxx
8:03:48 (xx_D) IN: "software" rrrrrrrrrr@xxxxx
Ziel ist es nun zu wissen, wieviel der vorhanden x Lizenzen bei Ausführung noch frei sind. D.h. nehmen wir an X=10,
dann sollten von den 10 alle OUT abgezogen werden und alle IN wieder dazugezählt werden, d.h. beim Beispiel oben wäre das Ergebnis 9.
Könnt ihr mir bitte ein detailiertes Beispiel posten, da meine Batchkenntnisse nicht die besten sind.
Danke
lordifm
habe folgende Frage. Es geht um ein FlexLM Logfile, welches folgendermassen aussieht:
7:56:58 (xx_D) IN: "software" rrrrrrrrrr@xxxxx
7:57:37 (xx_D) OUT: "software" rrrrrrrrrr@xxxxx
7:59:53 (xx_D) OUT: "software" rrrrrrrrrr@xxxxx
8:00:31 (xx_D) OUT: "software" rrrrrrrrrr@xxxxx
8:03:48 (xx_D) IN: "software" rrrrrrrrrr@xxxxx
Ziel ist es nun zu wissen, wieviel der vorhanden x Lizenzen bei Ausführung noch frei sind. D.h. nehmen wir an X=10,
dann sollten von den 10 alle OUT abgezogen werden und alle IN wieder dazugezählt werden, d.h. beim Beispiel oben wäre das Ergebnis 9.
Könnt ihr mir bitte ein detailiertes Beispiel posten, da meine Batchkenntnisse nicht die besten sind.
Danke
lordifm
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 34581
Url: https://administrator.de/forum/bestimmte-texte-in-textfile-addieren-und-substrahieren-34581.html
Ausgedruckt am: 23.12.2024 um 13:12 Uhr
5 Kommentare
Neuester Kommentar
Okay, lordifm,
wenn Diese Logdatei "lordifm.log" heißen würde und auf Laufwerk F:\ läge, dann würde vom CMD-Prompt aus dieses helfen:
Erläuterung:
Find /C "OUT:"-------> zählt die Fundstellen (=Fund-Zeilen) von "IN:" bzw. "OUT:" im *.log
Das FOR /F...-Konstrukt nimmt von der Rückgabe, die so aussieht,
das dritte Token. ("Token" hier in etwa "Feld" oder "Wort"). Also die Zahl 3.
...und speichert diese Zahl als numerischen Wert mit SET /A variablenname=wert
Mit Set Now kannst Du die Werte anzeigen/prüfen.
Im Mini-Batch also:
So in etwa die ungetestete Skizze.
HTH Biber
wenn Diese Logdatei "lordifm.log" heißen würde und auf Laufwerk F:\ läge, dann würde vom CMD-Prompt aus dieses helfen:
for /f "tokens=3" %i in ('find /c "IN:" f:\lordifm.log') do @Set /a NowIN=%i
for /f "tokens=3" %o in ('find /c "OUT:" f:\lordifm.log') do @Set /a NowOUT=%o
Find /C "OUT:"-------> zählt die Fundstellen (=Fund-Zeilen) von "IN:" bzw. "OUT:" im *.log
Das FOR /F...-Konstrukt nimmt von der Rückgabe, die so aussieht,
---------- F:\LORDIFM.LOG: 3
...und speichert diese Zahl als numerischen Wert mit SET /A variablenname=wert
Mit Set Now kannst Du die Werte anzeigen/prüfen.
Im Mini-Batch also:
@echo off & setlocal
Set "Logfile=f:\lordifm.log"
Set /a nTotal=10
for /f "tokens=3" %%i in ('find /c "IN:" %logFile%') do Set /a NowIN=%%i
for /f "tokens=3" %%o in ('find /c "OUT:" %logFile%') do Set /a NowOUT=%%o
Set /a nNowFree=%nTotal% - %NowIn% + %NowOut%
Echo Noch frei sind %nNowFree% Lizenzen.
So in etwa die ungetestete Skizze.
HTH Biber
Hm, lordimg,
das sollte (sinngemäß) gehen mit
Wenn Du den "Satzbau" umgekehrt hast:
..dann könnte es Probleme geben, wenn %nNowFree% gleich 1,2,3,4 oder 5 ist.
Denn das sind in diesem Kontext "Sonderzeichen" - weil sie vor einem Umleitungssymbol stehen.
Es würde ja aufgelöst werden zu:
..und das wiederum wurde bedeuten, dass das Device #2, STDERR, alle Fehlermeldungen des Befehls "echo" in die Datei umgeleitet werden sollen.
Meine Empfehlung: diese Situation vermeiden (Satzbau umstellen).
Wenn das nicht gehen sollte (wegen des ästhetischen Empfindens des Chefs z.B.), dann den undokumentierten Biber-Weg nehmen:
Gruß
Biber
das sollte (sinngemäß) gehen mit
...
echo %date% %time%: %nNowFree% freie Lizenzen>>%ausgabedatei%
Wenn Du den "Satzbau" umgekehrt hast:
...
echo %date% %time% - Freie Lizenzen: %nNowFree%>>%ausgabedatei%
..dann könnte es Probleme geben, wenn %nNowFree% gleich 1,2,3,4 oder 5 ist.
Denn das sind in diesem Kontext "Sonderzeichen" - weil sie vor einem Umleitungssymbol stehen.
Es würde ja aufgelöst werden zu:
...
echo 21.06.2006 16:15:29 - Freie Lizenzen: 2>>%ausgabedatei%
Meine Empfehlung: diese Situation vermeiden (Satzbau umstellen).
Wenn das nicht gehen sollte (wegen des ästhetischen Empfindens des Chefs z.B.), dann den undokumentierten Biber-Weg nehmen:
...
IF %nNowfree% LSS 6 (
echo %date% %time% - freie Lizenzen: ^%nNowFree%>>%ausgabedatei%
) ELSE (
echo %date% %time% - freie Lizenzen: %nNowFree%>>%ausgabedatei%
)
Gruß
Biber