mikefield
Goto Top

Logfile auswerten und bestimmte Daten in neue Datei schreiben

Grober Ansatz vorhanden, aber es geht bestimmt besser

Hallo zusammen! Ich lasse täglich jede Stunde einen Report in eine Datei schreiben. Die neuen Daten werden angehängt.
Nun muß ich die Uhrzeit des Reports und einen bestimmten Wert exportieren und in eine neue Datei schreiben.

Die Rohdaten sehen so auszugsweise so aus, habe jetzt nicht alle 24h genommen:

2010-04-14  10:00 AM  -  Report for 

G3xV13	330	669	999	233	2767	3000	18685	231315	250000	2643	17357	20000	297	20703	21000	529	9471	10000	10	7990	8000	0	28	28	0	300	300	0	15675	15928	0	90000	90000	912	2077	3000	2858	37142	40000	379	221	600	389	123	512	2	998	1000	209	9790	9999	131	4869	5000	15424	559	19441	20000	0	1800	1800	0	0	0	199	1801	2000	0	2000	2000	0	2560	2560	0	5	5	0	128	128	0	1250	1250	6003	43730	49733	1337	25171	26508	5	79995	80000	41	7459	7500	26	38	64	253	15675	15928	437	1563	2000	1839	18161	20000	5502	174498	180000	1011	1058	2069	0	0	0	0	2069	2069	3436	56564	60000	2973	57027	60000	3	11997	12000	0	15675	15928	0	256	256	0	63	63	0	200	200	0	1000	1000	2717	283	3000	10	0	10	14	236	250	0	128	128	20	108	128	0	250	250	0	999	999	64	336	400	0	400	400	0	9999	9999	0	200	200	61	1939	2000	1721	6279	8000	0	8000	8000	0	8000	8000	0	1000	1000	0	0	0	6	94	17496000	0	100	100000	4630	30811	36000	738	188	2790	2591	199	1840	926	0	5000	5000	487	0	0	0	0	0	0	60	6940	7000	4512	39488	44000	2791	445	3236	0	500	500	0	0	0	0	0	0	0	0	0	0	0	0	1	4	5	0	0	0	0	0	0	0	100	972000	84	11916	12000	0	0	0	0	0	12000	12000	0	0	0	AgentSC		0	1255	1255	IP_API_A		84	30	114	IP_API_B		0	10	10	IP_Agent	6	0	3	3	IP_Phone		0	12000	12000	IP_ROMax		0	12000	12000	IP_Soft		0	5	5	oneX_Comm		0	12000	12000																																																																																																															R013x.01.2.632.1	G3xV13	A	R013x.01.2.632.1	G3x(large)	A

2010-04-14  11:00 AM  -  Data Export

2010-04-14  11:00 AM  -  Report for 

G3xV13	330	669	999	233	2767	3000	18685	231315	250000	2643	17357	20000	297	20703	21000	529	9471	10000	10	7990	8000	0	28	28	0	300	300	0	15675	15928	0	90000	90000	923	2077	3000	2858	37142	40000	379	221	600	389	123	512	2	998	1000	209	9790	9999	131	4869	5000	15424	559	19441	20000	0	1800	1800	0	0	0	199	1801	2000	0	2000	2000	0	2560	2560	0	5	5	0	128	128	0	1250	1250	6003	43730	49733	1337	25171	26508	5	79995	80000	41	7459	7500	26	38	64	253	15675	15928	437	1563	2000	1839	18161	20000	5502	174498	180000	1011	1058	2069	0	0	0	0	2069	2069	3436	56564	60000	2973	57027	60000	3	11997	12000	0	15675	15928	0	256	256	0	63	63	0	200	200	0	1000	1000	2717	283	3000	10	0	10	14	236	250	0	128	128	20	108	128	0	250	250	0	999	999	64	336	400	0	400	400	0	9999	9999	0	200	200	61	1939	2000	1721	6279	8000	0	8000	8000	0	8000	8000	0	1000	1000	0	0	0	6	94	17496000	0	100	100000	4630	30811	36000	738	188	2790	2591	199	1840	926	0	5000	5000	487	0	0	0	0	0	0	60	6940	7000	4512	39488	44000	2791	445	3236	0	500	500	0	0	0	0	0	0	0	0	0	0	0	0	1	4	5	0	0	0	0	0	0	0	100	972000	84	11916	12000	0	0	0	0	0	12000	12000	0	0	0	AgentSC		0	1255	1255	IP_API_A		84	30	114	IP_API_B		0	10	10	IP_Agent	6	0	3	3	IP_Phone		0	12000	12000	IP_ROMax		0	12000	12000	IP_Soft		0	5	5	oneX_Comm		0	12000	12000																																																																																																															R013x.01.2.632.1	G3xV13	A	R013x.01.2.632.1	G3x(large)	A

2010-04-14  0:00 PM  -  Data Export

2010-04-14  0:00 PM  -  Report for 

G3xV13	330	669	999	233	2767	3000	18685	231315	250000	2643	17357	20000	293	20707	21000	529	9471	10000	8	7992	8000	0	28	28	0	300	300	0	15675	15928	0	90000	90000	892	2108	3000	2798	37202	40000	379	221	600	389	123	512	2	998	1000	209	9790	9999	131	4869	5000	15424	559	19441	20000	0	1800	1800	0	0	0	199	1801	2000	0	2000	2000	0	2560	2560	0	5	5	0	128	128	0	1250	1250	6003	43730	49733	1337	25171	26508	5	79995	80000	41	7459	7500	26	38	64	253	15675	15928	437	1563	2000	1839	18161	20000	5502	174498	180000	980	1089	2069	0	0	0	0	2069	2069	3351	56649	60000	2905	57095	60000	2	11998	12000	0	15675	15928	0	256	256	0	63	63	0	200	200	0	1000	1000	2717	283	3000	10	0	10	14	236	250	0	128	128	20	108	128	0	250	250	0	999	999	64	336	400	0	400	400	0	9999	9999	0	200	200	61	1939	2000	1721	6279	8000	0	8000	8000	0	8000	8000	0	1000	1000	0	0	0	6	94	17496000	0	100	100000	4630	30811	36000	738	188	2790	2591	199	1840	926	0	5000	5000	487	0	0	0	0	0	0	60	6940	7000	4512	39488	44000	2791	445	3236	0	500	500	0	0	0	0	0	0	0	0	0	0	0	0	1	4	5	0	0	0	0	0	0	0	100	972000	84	11916	12000	0	0	0	0	0	12000	12000	0	0	0	AgentSC		0	1255	1255	IP_API_A		84	30	114	IP_API_B		0	10	10	IP_Agent	6	0	3	3	IP_Phone		0	12000	12000	IP_ROMax		0	12000	12000	IP_Soft		0	5	5	oneX_Comm		0	12000	12000																																																																																																															R013x.01.2.632.1	G3xV13	A	R013x.01.2.632.1	G3x(large)	A

2010-04-14  1:00 PM  -  Data Export

2010-04-14  1:00 PM  -  Report for 

G3xV13	330	669	999	233	2767	3000	18685	231315	250000	2643	17357	20000	280	20720	21000	529	9471	10000	9	7991	8000	0	28	28	0	300	300	0	15675	15928	0	90000	90000	805	2195	3000	2559	37441	40000	379	221	600	389	123	512	2	998	1000	209	9790	9999	131	4869	5000	15424	559	19441	20000	0	1800	1800	0	0	0	199	1801	2000	0	2000	2000	0	2560	2560	0	5	5	0	128	128	0	1250	1250	6002	43731	49733	1337	25171	26508	5	79995	80000	41	7459	7500	26	38	64	253	15675	15928	437	1563	2000	1838	18162	20000	5499	174501	180000	889	1180	2069	0	0	0	0	2069	2069	3003	56997	60000	2632	57368	60000	6	11994	12000	0	15675	15928	0	256	256	0	63	63	0	200	200	0	1000	1000	2717	283	3000	10	0	10	14	236	250	0	128	128	20	108	128	0	250	250	0	999	999	64	336	400	0	400	400	0	9999	9999	0	200	200	61	1939	2000	1721	6279	8000	0	8000	8000	0	8000	8000	0	1000	1000	0	0	0	6	94	17496000	0	100	100000	4629	30812	36000	738	188	2790	2591	199	1839	926	0	5000	5000	487	0	0	0	0	0	0	60	6940	7000	4512	39488	44000	2791	445	3236	0	500	500	0	0	0	0	0	0	0	0	0	0	0	0	1	4	5	0	0	0	0	0	0	0	100	972000	84	11916	12000	0	0	0	0	0	12000	12000	0	0	0	AgentSC		0	1255	1255	IP_API_A		84	30	114	IP_API_B		0	10	10	IP_Agent	6	0	3	3	IP_Phone		0	12000	12000	IP_ROMax		0	12000	12000	IP_Soft		0	5	5	oneX_Comm		0	12000	12000																																																																																																															R013x.01.2.632.1	G3xV13	A	R013x.01.2.632.1	G3x(large)	A

2010-04-14  2:00 PM  -  Data Export

2010-04-14  2:00 PM  -  Report for 

G3xV13	330	669	999	233	2767	3000	18685	231315	250000	2643	17357	20000	280	20720	21000	529	9471	10000	9	7991	8000	0	28	28	0	300	300	0	15675	15928	0	90000	90000	828	2172	3000	2610	37390	40000	379	221	600	389	123	512	2	998	1000	209	9790	9999	131	4869	5000	15424	559	19441	20000	0	1800	1800	0	0	0	199	1801	2000	0	2000	2000	0	2560	2560	0	5	5	0	128	128	0	1250	1250	6002	43731	49733	1337	25171	26508	5	79995	80000	41	7459	7500	26	38	64	253	15675	15928	437	1563	2000	1838	18162	20000	5499	174501	180000	910	1159	2069	0	0	0	0	2069	2069	3086	56914	60000	2696	57304	60000	16	11984	12000	0	15675	15928	0	256	256	0	63	63	0	200	200	0	1000	1000	2717	283	3000	10	0	10	14	236	250	0	128	128	20	108	128	0	250	250	0	999	999	64	336	400	0	400	400	0	9999	9999	0	200	200	61	1939	2000	1721	6279	8000	0	8000	8000	0	8000	8000	0	1000	1000	0	0	0	6	94	17496000	0	100	100000	4629	30812	36000	738	188	2790	2591	199	1839	926	0	5000	5000	487	0	0	0	0	0	0	60	6940	7000	4512	39488	44000	2791	445	3236	0	500	500	0	0	0	0	0	0	0	0	0	0	0	0	1	4	5	0	0	0	0	0	0	0	100	972000	84	11916	12000	0	0	0	0	0	12000	12000	0	0	0	AgentSC		0	1255	1255	IP_API_A		84	30	114	IP_API_B		0	10	10	IP_Agent	6	0	3	3	IP_Phone		0	12000	12000	IP_ROMax		0	12000	12000	IP_Soft		0	5	5	oneX_Comm		0	12000	12000																																																																																																															R013x.01.2.632.1	G3xV13	A	R013x.01.2.632.1	G3x(large)	A


Hier mein grobes Konzept, das ich aus anderen Scripten genommen habe. Was fehlt ist eine Schleife zum auslesen ab Zeile 4 .
Man müßte dann immer 7 Zeilen hoch zählen. Könnt Ihr mir da helfen?

@echo off & setlocal enabledelayedexpansion

set Line=2

:ProcessCall

for /f "usebackq delims=" %%b in (Report.txt) do if not defined Zeile set "Zeile=%%b"  
    call :ProcessLine1 "!Zeile!"  

    set Zeile=
    for /f "usebackq skip=%line% delims=" %%b in (Report.txt) do if not defined Zeile set "Zeile=%%b"  
    call :ProcessLine2 !Zeile!
)

goto :eof 

REM  ----------------------------------------------------------------------------
:ProcessLine1
REM Uhrzeit auslesen 
for /f "eol=: tokens=1-5 delims=: " %%i in (%1) do set "Uhrzeit=%%j %%k %%l"  
goto :eof

REM  ----------------------------------------------------------------------------
:ProcessLine2
REM Wert auslesen
for /L %%i in (1,1,34) do shift
set "Anzahl=%~1"  

REM  ----------------------------------------------------------------------------
:Write

rem >>"%XPfad%\%Load%"   
>> Auszug.txt echo %Uhrzeit%	%Anzahl%
goto :eof

Danke im voraus

mf

Content-Key: 140665

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

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

Member: bastla
bastla Apr 14, 2010 at 20:12:07 (UTC)
Goto Top
Hallo Mikefield!

Ich würde es ziemlich ähnlich versuchen, allerdings auf den Abstand von jeweiils 2 Zeilen zwischen der "Report for"-Zeile und den Daten setzen:
@echo off & setlocal
set "Ein=D:\Logfile.txt"  
set "Aus=D:\Auszug.txt"  

del "%Aus%" 2>nul  
for /f "tokens=1-5 delims=: " %%a in ('findstr /n /c:"M  -  Report for" "%Ein%"') do (  
    set "Uhrzeit= %%c:%%d %%e"  
    set /a Line=%%a+1
    call :ProcessLine1
)
goto :eof

:ProcessLine1
set Zeile=
for /f "usebackq skip=%Line% delims=" %%i in ("%Ein%") do if not defined Zeile set "Zeile=%%i"  
call :ProcessLine2 %Zeile%
goto :eof

:ProcessLine2
for /L %%i in (1,1,34) do shift
set "Anzahl=%1"  
>>"%Aus%" echo %Uhrzeit:~-8% %Anzahl%   
goto :eof
Soferne die Anzahl tatsächlich nur ausgegeben werden soll, könnte noch die Zuweisung zur Variablen eingespart und aus den Zeilen 21 und 22
>>"%Aus%" echo %Uhrzeit:~-8% %1
gemacht werden.

Grüße
bastla
Member: Mikefield
Mikefield Apr 15, 2010 at 07:37:20 (UTC)
Goto Top
Hat wunderbar funktioniert! Besten Dank. Die Umwandlung in 24h Uhrzeit bekomme ich dann hin.

Aber eine Frage habe ich noch: Wie kann man gerade und ungerade Zahlen auswerten?
Also wenn Zahl x gerade dann Parameter auf 2 und wenn ungerade dann auf 1 setzen.

mf
Member: bastla
bastla Apr 15, 2010 at 08:42:20 (UTC)
Goto Top
Hallo Mikefield!
Wie kann man gerade und ungerade Zahlen auswerten?
Dafür würde ich einfach die letzte Stelle der Zahl prüfen, etwa:
echo %Zahl:~-1%|findstr "0 2 4 6 8">nul && set Param=2 || set Param=1
Grüße
bastla
Member: Mikefield
Mikefield Apr 16, 2010 at 20:23:33 (UTC)
Goto Top
Hallo Bastler,

das ist ja einfacher als gedacht! Danke.

Ich wußte, das ich irgendwo eine andere Lösung hatte, hatte es die ganze Zeit gesucht, aber nicht gefunden.
Hier aber, war in einer dunklen Ecke der HD zu Hause versteckt (bin die Woche über auf "Montage"), eine Alternative:

SET /A "GeradeUngerade=NUMBER %% 2"  
IF %GeradeUngerade%==0 set "GU=0" & GOTO Ausgabe  
IF %GeradeUngerade%==1 set "GU=1" & GOTO Ausgabe  

mf
Member: bastla
bastla Apr 17, 2010 at 06:00:11 (UTC)
Goto Top
Hallo Mikefield!

Das wäre die "klassische" Vorgangsweise ...

Noch eine Anmerkung: Eigentlich ließe sich das Ganze auf eine Zeile reduzieren:
SET /A "GU=NUMBER %% 2" & GOTO Ausgabe
Grüße
bastla