lyriker
Goto Top

Maschinenlogs in Batch aufbereiten

Nachdem ich das Problem "Leerzeilen aus txt Dateien entfernen" und "entferne ungewollte Zeichen aus der TXT Datei und speichere das Ganze in CSV Dateien um" erfolgreich mit Hilfe der Beispiele aus dem Forum hier selbst geschafft habe, suche ich nun nach Hilfe zu "Wie wandle ich in der Batch 4m3s (4 min 3 sek) in 00:04:03 um"?

Nachdem ich das Problem "Leerzeilen aus txt Dateien entfernen" und "entferne ungewollte Zeichen aus der TXT Datei und speichere das Ganze in CSV Dateien um" erfolgreich mit Hilfe der Beispiele aus dem Forum hier selbst geschafft habe, suche ich nun nach Hilfe zu "Wie wandle ich in der Batch 4m3s (4 min 3 sek) in 00:04:03 um"?

Am Schluss soll eine csv die man in die Datenbank verpacken kann raus kommen.

Die Vorgabe ist, ein Log einer Maschine in ein Datenbank kompatibles Format zu wandeln...

txtDatei:

Date :2013.1.4

Save Recording  : 8.5.38 Clock

Automatik : T#4m18s

Aktiv : T#3m27s

Error : T#18s

Magazine : T#51s

Out trans. : T#0ms

Schnitte: 16

Teil abgeschoben: 14

Number of Parts: 13

Script (erste Bereinigung):

setlocal enabledelayedexpansion
@echo off
del ausgabetext.csv
set "filename=20130104.txt"  
set "tempfile=tmp.txt"  
FOR /F "delims=|" %%f IN (%filename%) DO set /p =%%f<nul|echo.%%f >>%tempfile%  

for /F "delims=" %%a in (%tempfile%) do (  
set text=%%a
set text=!text: =!
set text=!text:^Clock=^!
set text=!text:^T#=^!
set text=!text:^:=^;!
set text=!text:^^=^!
echo !text!>>ausgabetext.csv
)
del tmp.txt

Dann wird diese Datei (ausgabetext.csv) erzeugt:

Date;2013.1.4
SaveRecording;8.5.38
Automatik;4m18s
Aktiv;3m27s
Error;18s
Magazine;51s
Outtrans.;1ms
Schnitte;16
Teilabgeschoben;14
NumberofParts;13

Alles soweit spitze. Doch die Zeile:
SaveRecording;8.5.38 sollte eigentlich SaveRecording;08:05:38
und die Zeilen ab Automatik;4m18s sollten eigentlich Automatik;00:04:18 sein
und Outtrans.;1ms = Outtrans.;00:00:01 etc.

Bin langsam fertig mit meinem Latein.. wäre jemand so nett mir zu helfen, mich vieleicht auf den richtigen Weg zu bringen?

Wäre äusserst dankbar, sitze schon seit Stunden damit herum...

Wenn Schreibfehler gefunden werden, können diese gern behalten werden :D

Content-ID: 197184

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

Ausgedruckt am: 25.11.2024 um 07:11 Uhr

rubberman
rubberman 17.01.2013 um 20:07:56 Uhr
Goto Top
Hallo Lyriker.

Ich verstehe zwar die Zeile Out trans. im Original nicht (0ms = 0 Millisekunden?), aber vielleicht funktioniert es ja so:
@echo off
setlocal EnableDelayedExpansion

set "filename=20130104.txt"  
set "outfile=ausgabetext.csv"  

>"%outfile%" (  
  for /f "usebackq tokens=1* delims=:" %%i in ("%filename%") do (  
    set "column1=%%i"  
    set "column1=!column1: =!"  
    for /f "tokens=1,2" %%k in ("%%j") do (  
      set "column2=%%k"  
      if /i "%%l"=="Clock" (  
        for /f "tokens=1-3 delims=." %%I in ("%%k") do (  
          set /a "h=10%%I, m=10%%J, s=10%%K"  
          set "column2=!h:~-2!:!m:~-2!:!s:~-2!"  
        )
      ) else if /i "!column2:~,2!"=="T#" (  
        for /f "tokens=1,2 delims=T#ms" %%I in ("%%k") do (  
          if "%%J"=="" (  
            set /a "m=100, s=10%%I"  
          ) else (
            set /a "m=10%%I, s=10%%J"  
          )
          set "column2=00:!m:~-2!:!s:~-2!"  
        )
      )
      echo !column1!;!column2!
    )
  )
)
Grüße
rubberman
Lyriker
Lyriker 18.01.2013 um 08:37:06 Uhr
Goto Top
Puh! Das ist mal eine verdammt gute Lösung! Danke vielmals!
Lyriker
Lyriker 18.01.2013 um 10:05:05 Uhr
Goto Top
PS: Ja das ist Milisekunde (00:00:00:001) = 1ms
da das aber der 00 - Wert ist (also es ist nichts passiert) kann man das vernachlässigen. jede Aktion ist > 1s

super!