CSV Datei per Batch bearbeiten, CR, dazu Exponentialformat in Datenzeile und leere Daten zwischen Trennzeichen also ein -for- Problem
Hallo!
wiedermal ich mit meinen Maschinendaten...
zuerst mal die Quelldatei, damit wir wissen um was es geht:
zwischen den einzelnen Zeilen sind dann nur CR also "Carriage return" oder "Wagenrücklauf", vielleicht hilft das ein wenig in der Fehlersuche.
Codierung der Dateien ist ANSI.
Dann will ich die einzelnen Zellen zu Token verarbeiten, (erste drei) das Datum zusammen setzen und die Zeit (Token 4) in ein SQL kompatibles Format bringen.
Mein Versuch:
Leider kommt dann Mist raus, und ich verstehe nicht warum:
Ich danke für jede erdenkliche Hilfe, wahrscheinlich bin ich wieder betriebsblind.
wiedermal ich mit meinen Maschinendaten...
zuerst mal die Quelldatei, damit wir wissen um was es geht:
* Tag;Monat;Jahr;Uhrzeit;Maschinenummer;Ereigniscode;Fehlercode;Artikelnummer;Belegungsplatz;Losname;laufende Teilenummer im Los;Oeffnungsnummer;Stabnummer;Teilemass1;Teilemass2;Zeit
26;9;2013;6:21:43:926;330030;11;;;;;;;;;;2616;Teil ist jetzt am Einlauf;
26;9;2013;6:21:52:358;330030;1;;757270120001;;;;;;1220.0;730.0;;Eintakten des Teils;
26;9;2013;6:22:26:66;330030;19;;757270120001;;;;;;1220.0;730.0;1800;Austakten des Teils vom Bearbeitungsplatz;
26;9;2013;6:22:48:338;330030;10;;;;;;;;;;;Warte auf Teil am Einlauf der Maschine;
26;9;2013;6:30:25:405;330030;11;;;;;;;;;;455;Teil ist jetzt am Einlauf;
26;9;2013;6:30:32:486;330030;1;;737270030001;;;;;;580.26;987.02;;Eintakten des Teils;
26;9;2013;6:30:53:676;330030;19;;737270030001;;;;;;580.26;987.02;505;Austakten des Teils vom Bearbeitungsplatz;
26;9;2013;6:31:28:366;330030;1;;757270020001;;;;;;580.0;990.0;;Eintakten des Teils;
26;9;2013;6:31:49:526;330030;19;;757270020001;;;;;;580.0;990.0;55;Austakten des Teils vom Bearbeitungsplatz;
26;9;2013;6:32:23:515;330030;1;;757270060001;;;;;;520.0;970.0;;Eintakten des Teils;
26;9;2013;6:32:45:106;330030;19;;757270060001;;;;;;520.0;970.0;55;Austakten des Teils vom Bearbeitungsplatz;
26;9;2013;6:33:18:775;330030;1;;757270070001;;;;;;520.0;970.0;;Eintakten des Teils;
26;9;2013;6:33:40:396;330030;19;;757270070001;;;;;;520.0;970.0;55;Austakten des Teils vom Bearbeitungsplatz;
zwischen den einzelnen Zeilen sind dann nur CR also "Carriage return" oder "Wagenrücklauf", vielleicht hilft das ein wenig in der Fehlersuche.
Codierung der Dateien ist ANSI.
Dann will ich die einzelnen Zellen zu Token verarbeiten, (erste drei) das Datum zusammen setzen und die Zeit (Token 4) in ein SQL kompatibles Format bringen.
Mein Versuch:
@echo off & setlocal
set "log_temp=D:\Lemuth\abgearbeitet\log_temp.csv"
set "Sammel=D:\Lemuth\export\export.csv"
set "log=D:\Lemuth\abgearbeitet\log.csv"
for /f "skip=1 usebackq tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18* delims=;" %%A in (quelle.csv) do (
echo|set /p ="%date% ">>"%log_temp%"
echo|set /p ="%time%~Lemuth~%%A-%%B-%%C~%%D">>"%log_temp%"
echo|set /p ="~%%E~%%F~%%G~%%H~%%I">>"%log_temp%"
echo ~%%J~%%K~%%L~%%M~%%N~%%O~%%P>>"%log_temp%"
)
Leider kommt dann Mist raus, und ich verstehe nicht warum:
23.10.2013 17:50:48,57~Lemuth~26-9-2013~6:21:43:926~330030~11~2616~Teil ist jetzt am Einlauf~26~9~2013~6:21:52:358~330030~1~757270120001~1220.0
Ich danke für jede erdenkliche Hilfe, wahrscheinlich bin ich wieder betriebsblind.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 220226
Url: https://administrator.de/contentid/220226
Ausgedruckt am: 25.11.2024 um 07:11 Uhr
6 Kommentare
Neuester Kommentar
Zu VB kann ich nichts sagen. Du kannst aber den Teil der Zeichenkette, der Datum und Zeit enthaelt wie bisher und den Rest mit Stringmanipulation bearbeiten.
lg.
PS also etwa so:
Damit dieser x13h Zeilenumbruch gelesen werden kann, hab ich das UNIX-Programm
lg.
lg.
PS also etwa so:
@ECHO OFF &SETLOCAL
set "CSVFile=136032_1_2592013.csv"
for /f "delims=" %%a in ('type "%CSVFile%"^|tr \r \n') do (
for /f "tokens=1-4*delims=;" %%b in ("%%~a") do (
set "cDate=%%d-%%c-%%b"
set "cTime=%%e"
set "line=%%f"
SETLOCAL ENABLEDELAYEDEXPANSION
set "cTime=!cTime:~0,8!"
set "line=!line:;=~!"
echo(!cDate!~!cTime!~!line!
endlocal
)
)
tr
eingesetzt (CoreUtils for Windows).lg.