markus-tausendfreund
Goto Top

Zeichenfolge in Folgezeile auslesen

Hallo liebe Mitstreiter,

wiedereinmal wende ich mich an die BrainBugs dieses Forums um mir weiterhelfen zu lassen.

Ich habe ein Addon zu meinem Artikel Textzeile mit 2 Parametern auswerten. In meinem letzen Artikel habe ich mich darauf berufen eine Zeile auszulesen. Dieses mal würde ich mein Script weiter verfeinern um eine detailiertere Auswertung zu ermöglichen.

Das Textfile setzt sich aus folgenden Zeilen zusammen:

20090702 06:01:07:034 - 05300 - INF DbUpdateAddress(customer:I21:I266736):the address 2192 is 5, updating
20090702 06:01:07:034 - 05300 - ERR Unexpected result:VO in address adrId:2192 customerId:I21:I266736 in CSM_NF, not updated
20090702 06:01:07:034 - 05300 - INF DbUpdateAddress(customer:I21:I276067):the address 2260 is 7, updating
20090702 06:01:07:034 - 05300 - ERR Unexpected result:VO in address adrId:2260 customerId:I21:I276067 in CSM_NF, not updated
20090702 06:01:07:050 - 05300 - INF DbUpdateAddress(customer:I21:I276523):the address 2294 is 16, updating
20090702 06:01:07:050 - 05300 - INF Reset adr_imp_timestamp for address adrId:2294 customerId:I21:I276523 in CSM_NF
20090702 06:01:07:065 - 05300 - INF Updated address data adrId:2294 customerId:I21:I276523 in CSM_NF
20090702 06:01:07:112 - 05300 - INF DbUpdateAddress(customer:I21:I293095):the address 2368 is 16, updating
20090702 06:01:07:112 - 05300 - INF Reset adr_imp_timestamp for address adrId:2368 customerId:I21:I293095 in CSM_NF
20090702 06:01:07:112 - 05300 - INF Updated address data adrId:2368 customerId:I21:I293095 in CSM_NF
20090702 06:01:07:190 - 05300 - INF DbUpdateAddress(customer:I21:I296258):the address 2786 is 7, updating
20090702 06:01:07:190 - 05300 - INF Reset adr_imp_timestamp for address adrId:2786 customerId:I21:I296258 in CSM_NF
20090702 06:01:07:190 - 05300 - INF Updated address data adrId:2786 customerId:I21:I296258 in CSM_NF
20090702 06:01:07:237 - 05300 - INF DbUpdateAddress(customer:I21:I304683):the address 2468 is 16, updating
20090702 06:08:23:004 - 05300 - INF Inserted address adrId:471136 customerId:I21:I498510 in CSM
20090702 06:08:23:113 - 05300 - INF Inserted address adrId:471137 customerId:I21:I498511 in CSM
20090702 06:08:23:207 - 05300 - INF Inserted address adrId:471138 customerId:I21:I498512 in CSM
20090702 06:08:23:316 - 05300 - INF Inserted address adrId:471139 customerId:I21:I498513 in CSM
20090702 06:08:23:426 - 05300 - INF Inserted address adrId:471140 customerId:I21:I498514 in CSM
20090702 06:08:23:519 - 05300 - INF Reset adr_imp_timestamp for address adrId:470704 customerId:I21:I498515 in CSM
20090702 06:08:23:519 - 05300 - INF Updated address data adrId:470704 customerId:I21:I498515 in CSM


@echo off & setlocal 
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set Datum=%%c%%b%%a  
set "Quelle=O:\Programme\DM\Log\import"  
set "nfins=0"  
set "nfres=0"  

dir O:\Programme\DM\Log\import\import*.log
Set /p "NRA=ImportNr [000XX] :"  
Set /p "NRB=ImportNr [000XX] :"  

for /f "delims=" %%s in ('dir /b /od "%Quelle%\import%NRA%.log"') do call :ProcessFile "%Quelle%\%%s"  
:ProcessFile
for /f "delims=" %%c in ('findstr /c:"Inserted " %1 ^|findstr /e "CSM_NF"') do (set /a nfins+=1)  
for /f "delims=" %%c in ('findstr /c:"Reset " %1 ^|findstr /e "CSM_NF"') do (set /a nfres+=1)  

for /f "delims=" %%s in ('dir /b /od "%Quelle%\import%NRB%.log"') do call :ProcessFile2 "%Quelle%\%%s"  
:ProcessFile2
for /f "delims=" %%c in ('findstr /c:"Inserted " %1 ^|findstr /e "CSM_NF"') do (set /a nfins+=1)  
for /f "delims=" %%c in ('findstr /c:"Reset " %1 ^|findstr /e "CSM_NF"') do (set /a nfres+=1)  

echo CSM_NF
echo updated: %nfins%
echo inserted: %nfres%

Meine Fragen:

1) Da ich nicht weiß wieviele Importdateien erstellt wurden würde ich zum einen gerne alle Importfiles auslesen die datum heute sind nacheinander. Und dies nicht wie im BSP oben manuell erfassen müssen.

Neu importiere Adressen zählen stellt kein Problem dar.
20090702 06:08:23:207 - 05300 - INF Inserted address adrId:471138 customerId:I21:I498512 in CSM

Die Adressen die einen Reset erfahren werden auch schon gezählt.
20090702 06:01:07:190 - 05300 - INF Reset adr_imp_timestamp for address adrId:2786 customerId:I21:I296258 in CSM_NF
20090702 06:01:07:190 - 05300 - INF Updated address data adrId:2786 customerId:I21:I296258 in CSM_NF


2) Ich möchte im Falle eines "DbUpdateAddress" alle Fälle zählen die z.B. den Status "is 7, " haben und sie einem Typ zu zuordnen der in Zeile 2 steht "CSM" oder "CSM_NF", zum anderen zählen wieviel davon einen Felher "ERR" enthalten und nicht eingelesen werden konnten ",not updated"

20090702 06:01:07:034 - 05300 - INF DbUpdateAddress(customer:I21:I276067):the address 2260 is 7, updating
20090702 06:01:07:034 - 05300 - ERR Unexpected result:VO in address adrId:2260 customerId:I21:I276067 in CSM_NF, not updated

Der Status kann den Wert "1" bis "22" haben.

Ich bin mir nicht sicher ob sich das ganz so wie gewünscht realisieren lässt.
Ich bedanke mich im Voraus für eure Hilfe
Gruß
Markus

Content-Key: 119612

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

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

Mitglied: 77559
77559 Jul 02, 2009, updated at Oct 18, 2012 at 16:38:36 (UTC)
Goto Top
Der Link ist verkehrt,
richtig wäre Textzeile mit 2 Parametern auswerten,
dein Vorttrag ist sehr lang und deine Frage setzt intensives Lesen des gesamten Kontextes und mehr voraus.

Ich glaube du legst die Latte für Antworten etwas zu hoch face-wink.

Vielleicht liest du mal Divide et impera

Gruß
LotPings
Member: markus-tausendfreund
markus-tausendfreund Jul 23, 2009 at 14:27:12 (UTC)
Goto Top
Ich werde den Beitrag erstmal als gelöst betrachten. Wenn sich einer dazu berufen fühlt die Lösung auszuarbeiten, kann er sich gerne bei mir melden.

Ich danke allen die meine Anfrage gelesen haben.
Gruß
Markus