Pro Zeile Logfile erzeugen, und bei nächsten Durchlauf der Vorlage Prüfen, ob es die Zeile schon gibt, aber wie?
Liebe Helfer,
habe hier wieder eine neue Maschine, deren Inhalt ich auch schon in eine gute Form bringe. Leider ist das Logfile ein Mist, weil die Maschine ununterbrochen in das File schreibt, und keine einzelnen Logs auswirft, und das Log einfach zwischendurch wieder die alten Zeilen löscht. Das heißt das ich jeden Tag einen Überhang habe, den ich natürlich nicht doppelt in die Datenbank pflegen will.
Deshalb wollte ich ein Art Log schrieben, der jede Zeile vorab prüft, ob es diese schon importiert hat.
als Identifier habe ich das Datum und die Uhrzeit (10.06.2013 16:34:01.530) erkoren, denn hier ist sicher gestellt, das diese die eindeutige Reihe der Daten erfasst.
Doch irgendwie... geht nüscht.
Beispiel:
Quelle:
Batch
--- 24.06.2013 hinzugefügt ---
Hier das geschriebene Ergebnis, das dann bei erfolgreichem Export in die Datenbank gelöscht wird:
--- Ende hinzugefügt ---
Danke schon mal für die Hilfe! Selbst man mir auf die Sprünge hilft, bin ich für jeden Vorschlag dankbar.
Vielleicht macht auch das Nahende Wochenende mein Kopf wuschig ;)
Vorab vieleicht noch:
Quelldatei lässt sich nicht anpassen, und VB kann ich nur bedingt nutzen.
Danke!
Viele Grüß
Lyk
habe hier wieder eine neue Maschine, deren Inhalt ich auch schon in eine gute Form bringe. Leider ist das Logfile ein Mist, weil die Maschine ununterbrochen in das File schreibt, und keine einzelnen Logs auswirft, und das Log einfach zwischendurch wieder die alten Zeilen löscht. Das heißt das ich jeden Tag einen Überhang habe, den ich natürlich nicht doppelt in die Datenbank pflegen will.
Deshalb wollte ich ein Art Log schrieben, der jede Zeile vorab prüft, ob es diese schon importiert hat.
als Identifier habe ich das Datum und die Uhrzeit (10.06.2013 16:34:01.530) erkoren, denn hier ist sicher gestellt, das diese die eindeutige Reihe der Daten erfasst.
Doch irgendwie... geht nüscht.
Beispiel:
Quelle:
F : 10.06.2013 16:34:01.530 Msg.: 1100 FZ: 03:04:20:537 BZ: 05:52:10:419 SZ: 00:29:24:719 STZ:0314 STZ/h:0033.3 --> OK
T : 10.06.2013 16:34:35.779 Msg.: 0003 FZ: 03:04:54:786 BZ: 05:52:10:419 SZ: 00:29:24:719 STZ:0315 STZ/h:0033.4 --> Fertigmeldung --> {;X;39;0039;307910;007;020;002;000000101977; 0.0;1748;H;071305;010;1748.0;002/002;;;;;24;} / GR071305.asc
F : 10.06.2013 16:34:50.190 Msg.: 1203 FZ: 03:05:09:197 BZ: 05:52:10:419 SZ: 00:29:24:719 STZ:0315 STZ/h:0033.3 --> Keine Leisten eingelegt
T : 10.06.2013 16:34:56.198 Msg.: 0003 FZ: 03:05:09:197 BZ: 05:52:16:428 SZ: 00:29:24:719 STZ:0316 STZ/h:0033.4 --> Fertigmeldung --> {;X;80;0080;307910;007;019;002;000000101977; 0.0;485;H;071305;010;485.0;002/002;;;;;24;} / GR071305.asc
F : 10.06.2013 16:38:09.086 Msg.: 1102 FZ: 03:05:09:197 BZ: 05:55:29:315 SZ: 00:29:24:719 STZ:0316 STZ/h:0033.3 --> Notaus aktiv ( Notaus entriegeln + <I-Taster> )
F : 10.06.2013 16:38:19.901 Msg.: 1103 FZ: 03:05:09:197 BZ: 05:55:29:315 SZ: 00:29:35:535 STZ:0316 STZ/h:0033.2 --> Keine Reglerfeigabe ( <Reset> )
F : 10.06.2013 16:38:20.502 Msg.: 1301 FZ: 03:05:09:197 BZ: 05:55:29:315 SZ: 00:29:36:136 STZ:0316 STZ/h:0033.2 --> Bitte Ablauf starten ( <NC-Start> )
F : 10.06.2013 16:38:29.515 Msg.: 1203 FZ: 03:05:09:197 BZ: 05:55:38:328 SZ: 00:29:36:136 STZ:0316 STZ/h:0033.2 --> Keine Leisten eingelegt
F : 10.06.2013 16:38:30.116 Msg.: 1305 FZ: 03:05:09:197 BZ: 05:55:38:928 SZ: 00:29:36:136 STZ:0316 STZ/h:0033.2 --> Leisten einlegen !!!
F : 10.06.2013 16:38:33.120 Msg.: 1304 FZ: 03:05:09:197 BZ: 05:55:41:933 SZ: 00:29:36:136 STZ:0316 STZ/h:0033.2 --> Leiste einlegen und starten ( <NC-Start> )
F : 10.06.2013 16:38:46.940 Msg.: 1100 FZ: 03:05:09:197 BZ: 05:55:55:753 SZ: 00:29:36:136 STZ:0316 STZ/h:0033.2 --> OK
F : 10.06.2013 16:39:10.975 Msg.: 1203 FZ: 03:05:33:231 BZ: 05:55:55:753 SZ: 00:29:36:136 STZ:0316 STZ/h:0033.2 --> Keine Leisten eingelegt
T : 10.06.2013 16:39:17.584 Msg.: 0003 FZ: 03:05:33:231 BZ: 05:56:02:363 SZ: 00:29:36:136 STZ:0317 STZ/h:0033.3 --> Fertigmeldung --> {;X;72;0072;307910;004;028;002;000000101977; 0.0;616;H;071305;010;616.0;002/002;;;;;24;} / GR071305.asc
F : 10.06.2013 16:39:32.606 Msg.: 1102 FZ: 03:05:33:231 BZ: 05:56:17:384 SZ: 00:29:36:136 STZ:0317 STZ/h:0033.3 --> Notaus aktiv ( Notaus entriegeln + <I-Taster> )
F : 10.06.2013 16:39:39.816 Msg.: 1301 FZ: 03:05:33:231 BZ: 05:56:17:384 SZ: 00:29:43:347 STZ:0317 STZ/h:0033.3 --> Bitte Ablauf starten ( <NC-Start> )
F : 10.06.2013 16:39:44.022 Msg.: 1203 FZ: 03:05:33:231 BZ: 05:56:21:590 SZ: 00:29:43:347 STZ:0317 STZ/h:0033.3 --> Keine Leisten eingelegt
F : 10.06.2013 16:39:45.224 Msg.: 1305 FZ: 03:05:33:231 BZ: 05:56:22:791 SZ: 00:29:43:347 STZ:0317 STZ/h:0033.3 --> Leisten einlegen !!!
F : 10.06.2013 16:39:47.627 Msg.: 1304 FZ: 03:05:33:231 BZ: 05:56:25:195 SZ: 00:29:43:347 STZ:0317 STZ/h:0033.3 --> Leiste einlegen und starten ( <NC-Start> )
F : 10.06.2013 16:39:57.842 Msg.: 1100 FZ: 03:05:33:231 BZ: 05:56:35:410 SZ: 00:29:43:347 STZ:0317 STZ/h:0033.3 --> OK
Batch
@echo off & setlocal
set "battemp=Bootctrl.__2"
set "Sammel=.\export\export.csv"
set "abgearb=.\abgearbeitet"
for /f "usebackq tokens=1* delims=:" %%A in ("%battemp%") do (
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23*" %%C in ("%%B") do (
REM DIESE FOR SCHLEIFE SOLL MIR DAS LOGFILE ERZEUGEN, UND BEI BESTEHENDER LOG DAS SCHREIBEN IN DIE DATEI EXPORT.CSV VERHINDERN:
for /f "usebackq tokens=1,2,3* delims=:" %%j in ('%%D') do (
REM HIER SCHREIBT ER DAS LOG:
echo|set /p =".">>"%%C_%%j%%k%%l"
)
echo|set /p ="Rotox_ZEA3976001~%%C~%%D~%%E~%%F~%%G~%%H~%%I~%%J~%%K~%%L~">>"%sammel%"
for /f "usebackq tokens=1* delims=:" %%V in ('%%M') do (
echo|set /p ="%%V~">>"%sammel%"
echo|set /p ="%%W~">>"%sammel%"
)
for /f "usebackq tokens=1* delims=:" %%X in ('%%N') do (
echo|set /p ="%%X~">>"%sammel%"
echo|set /p ="%%Y~">>"%sammel%"
)
echo %%O~%%P %%Q %%R %%S %%T %%U >>"%sammel%"
)
)
--- 24.06.2013 hinzugefügt ---
Hier das geschriebene Ergebnis, das dann bei erfolgreichem Export in die Datenbank gelöscht wird:
Rotox_ZEA3976001~10.06.2013~16:34:01.530~Msg.:~1100~FZ:~03:04:20:537~BZ:~05:52:10:419~SZ:~00:29:24:719~STZ~0314~STZ/h~0033.3~-->~OK
Danke schon mal für die Hilfe! Selbst man mir auf die Sprünge hilft, bin ich für jeden Vorschlag dankbar.
Vielleicht macht auch das Nahende Wochenende mein Kopf wuschig ;)
Vorab vieleicht noch:
Quelldatei lässt sich nicht anpassen, und VB kann ich nur bedingt nutzen.
Danke!
Viele Grüß
Lyk
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 208439
Url: https://administrator.de/contentid/208439
Ausgedruckt am: 25.11.2024 um 07:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Lyriker!
Prüfen, ob es die Zeile schon gibt, würde ich schematisch etwa so:
oder
wobei Datum und Uhrzeit als Suchbegriff natürlich in (einer) Variablen enthalten sein müssten.
Wichtig: Damit das funktionieren kann, muss "%Sammel%" bereits vorweg existieren, was sich zB per
realisieren ließe ...
Grüße
bastla
Prüfen, ob es die Zeile schon gibt, würde ich schematisch etwa so:
findstr /c:"10.06.2013 16:34:01.530" "%Sammel%">nul || echo gibt es noch nicht, daher schreiben
findstr /c:"10.06.2013 16:34:01.530" "%Sammel%">nul && echo gibt es schon, daher überspringen
Wichtig: Damit das funktionieren kann, muss "%Sammel%" bereits vorweg existieren, was sich zB per
type nul>"%Sammel%"
Grüße
bastla
Hallo Lyriker!
Falls nicht, könntest Du ja einmal
versuchen ...
Grüße
bastla
Falls nicht, könntest Du ja einmal
findstr /c:"%%C %%D" "D:/Rotox/ZEA3976001/Log/abgearbeitet/export.csv">nul && (
echo uebersprungen!
pause
) || (
echo|set /p ="Rotox_ZEA3976001~%%C~%%D~%%E~%%F~%%G~%%H~%%I~%%J~%%K~%%L~">>"%sammel%"
for /f "usebackq tokens=1* delims=:" %%V in ('%%M') do (
echo|set /p ="%%V~">>"%sammel%"
echo|set /p ="%%W~">>"%sammel%"
)
for /f "usebackq tokens=1* delims=:" %%X in ('%%N') do (
echo|set /p ="%%X~">>"%sammel%"
echo|set /p ="%%Y~">>"%sammel%"
)
echo %%O~%%P %%Q %%R %%S %%T %%U >>"%sammel%"
echo normales Ende!
rem pause
)
Grüße
bastla