axfa77
Goto Top

BATCH-Skript, welches 24 einzelne (Stunden-) Dateien (.csv) zu einer einzelnen (Tages-) Datei zusammenfügt und alle Zeitstempel bzw. Überschriften bis auf die erste entfernt?

Hallo,

Erst einmal tolles Forum hier, schon viel gelesen!

Mich beschäftigt folgende Problemstellung:


Ich muss von einem entfernten PC csv-Dateien herunterladen (habe ich hinbekommen), welche folgendes Format bzw. Namen haben:

TLG_SystemArchive_20130126_000000_-_20130126_010000_MIN.csv
TLG_SystemArchive_20130126_010000_-_20130126_020000_MIN.csv
TLG_SystemArchive_20130126_020000_-_20130126_030000_MIN.csv

usw.

Diese Dateien beinhalten jeweils 1 Stunde Daten also 60 Datensätze im Minutentakt -> 24 Dateien = 1 Tag.

Vor den Daten gibt es immer eine Zeile (bzw. "Überschrift") wie eine Art Zeitstempel.

Date Spalte1 Spalte2 usw.

Daraus werden soll eine "Tagesdatei", wo alle 24 Dateien eines!! Datums zusammengefasst werden sollen (habe ich auch manuell hinbekommen via TYPE).

Problem: Es sollen bis auf den ersten Zeitstempel die restlichen 23 entfernt werden und das anfängliche "Date" in "DATE" ersetzt werden.

Wichtig hierbei ist auch, daß nur Dateien des Tages 20130126 in eine Datei zusammengefasst werden, also nicht die Daten vom z.B. 20130125 mit einfließen.

Hätte jemand eine Idee dazu?

Wäre für jeden Tip dankbar!

Gruß Axel

Content-ID: 197922

Url: https://administrator.de/forum/batch-skript-welches-24-einzelne-stunden-dateien-csv-zu-einer-einzelnen-tages-datei-zusammenfuegt-und-alle-197922.html

Ausgedruckt am: 21.04.2025 um 14:04 Uhr

bastla
bastla 30.01.2013 um 14:32:29 Uhr
Goto Top
Hallo axfa77 und willkommen im Forum!

Da sich die Kopfzeile ja wohl nicht so häufig ändern dürfte, würde ich diese einfach (mit der gewünschten Änderung ("Date" -> "DATE") in einer Datei "Kopf.txt" speichern und dann etwa so vorgehen (ungetestet):
pushd "D:\Ordner mit den CSV-Dateien"  
for /f "delims=" %%i in ('dir /b/on TLG_SystemArchive_*.csv') do (  
    for /f "tokens=3 delims=_" %%a in ("%%i") do (  
        if not exist "%%a.csv" copy "Kopf.txt" "%%a.csv" >nul  
        more +1 "%%i">>"%%a.csv"  
    )
)
popd
Grüße
bastla
axfa77
axfa77 30.01.2013 aktualisiert um 15:11:46 Uhr
Goto Top
Hallo Bastla,

danke für den Tip!

Funktioniert, nur ist die Kopfzeile jetzt gar nicht mehr vorhanden, sprich ALLE Kopfzeilen sind entfernt.

Wo stelle ich ein, wie die zusammengefasste Datei am Ende heisst? Lieb wäre mir: DAYxy.XXX (xy = Tag z.B. der 26. aus meinem Beispiel), wie ziehe ich das aus dem TLG-Namen?


Gruß Axel

EDIT: Die Datei Kopf.txt wird nirgendwo erstellt? Als erste Zeile brauche ich diese von dem ersten (echten) Datensatz...

EDIT2: Jetzt verstehe ich die Kopf.txt Sache: Der Zeitstempel ist sehr wichtig dabei, dieser MUSS in der ersten Zeile bleiben. Ich kann ihn nicht in eine Datei Kopf.txt schreiben.
bastla
bastla 30.01.2013, aktualisiert am 31.01.2013 um 12:11:36 Uhr
Goto Top
Hallo axfa77!

Wenn das Original der Kopfzeile benötigt wird, dann eher so (weiterhin ungetestet face-wink):
setlocal enabledelayedexpansion
pushd "D:\Ordner mit den CSV-Dateien"  
for /f "delims=" %%i in ('dir /b/on TLG_SystemArchive_*.csv') do (  
    set "Name=%%~ni"  
    set "Name=DAY!Name:~24,2!.XXX"  
    if not exist "!Name!" (  
        set /p Kopf=<"%%i"  
        >"!Name!" echo !Kopf:Date_Time=DATE!  
    )
    more +1 "%%i">>"!Name!"  
)
popd
Grüße
bastla

[Edit] Schreibweise "!Name!" und Ersetzung in Kopfzeile angepasst. [/Edit]
axfa77
axfa77 31.01.2013 aktualisiert um 09:59:19 Uhr
Goto Top
Hi,

vielen Dank!

Leider fehlt immer noch die 1. Kopfzeile.

Ich hab keinen Schimmer, wie ich das machen soll.

Der Rest läuft PERFEKT!!!

Vielleicht noch eine Idee?

Gruß

EDIT: die Kopfzeile jeder Datei sieht so aus (Date_Time muss mit DATE ersetzt werden):

Date_Time;30AA203XR01/ANA.QOUT;30AA211XQ01/ANA.QOUT;30AM210XQ01/ANA.QOUT;30AN001XQ04/ANA.QOUT;30CP202XQ01/ANA.QOUT;30CP203XQ01/ANA.QOUT;30CP210XQ01/ANA.QOUT;30CP230XQ01/ANA.QOUT;30CP234XQ01/ANA.QOUT;30CP234XQ02/ANA.QOUT;30CP234XQ03/ANA.QOUT;30CP234XQ91/ANA.IN;30CP234XQ91/ANA.IN1;30CP234XQ91/ANA.IN2;30CP234XQ91/ANA.IN3;30CT040XQ01/ANA.QOUT;30CT101XQ01/ANA.QOUT;30CT102XQ01/ANA.QOUT;30CT103XQ01/ANA.QOUT;30CT104XQ01/ANA.QOUT;30CT105XQ01/ANA.QOUT;30CT106XQ01/ANA.QOUT;30CT111XQ01/ANA.QOUT;30CT112XQ01/ANA.QOUT;30CT121XQ01/ANA.QOUT;30CT122XQ01/ANA.QOUT;30CT123XQ01/ANA.QOUT;30CT124XQ01/ANA.QOUT;30CT201XQ01/ANA.QOUT;30CT202XQ01/ANA.QOUT;30CT203XQ01/ANA.QOUT;30CT205XQ01/ANA.QOUT;30CT221XQ01/ANA.QOUT;30CT222XQ01/ANA.QOUT;30CT223XQ01/ANA.QOUT;30CT229XQ01/ANA.QOUT;30CT229XQ02/ANA.QOUT;30CT229XQ03/ANA.QOUT;30CT229XQ91/ANA.IN;30CT229XQ91/ANA.IN1;30CT229XQ91/ANA.IN2;30CT229XQ91/ANA.IN3;30CT230XQ01/ANA.QOUT;30CY106XQ01/ANA.QOUT;30CY106XQ02/ANA.QOUT;30CY111XQ41/ANA.QOUT;30CY111XQ45/ANA.QOUT;30CY112XQ47/ANA.QOUT;30CY112XQ49/ANA.QOUT;30CY115XQ11/ANA.QOUT;30CY121XQ41/ANA.QOUT;30CY121XQ45/ANA.QOUT;30CY122XQ47/ANA.QOUT;30CY122XQ49/ANA.QOUT;30CY125XQ11/ANA.QOUT;30CY126XQ01/ANA.QOUT;30CY126XQ02/ANA.QOUT;30GH001XR05/ANA.QOUT;30GH001XR06/ANA.QOUT;31CL300XQ01/ANA.QOUT;31CP360XQ01/ANA.QOUT;31CP370XQ01/ANA.QOUT;31CP383XQ01/ANA.QOUT;31CP383XQ02/ANA.QOUT;31CP383XQ03/ANA.QOUT;31CP383XQ91/ANA.IN;31CP383XQ91/ANA.IN1;31CP383XQ91/ANA.IN2;31CP383XQ91/ANA.IN3;31CT367XQ01/ANA.QOUT;32CF441XQ01/ANA.QOUT;32CF442XQ01/ANA.QOUT;32CF443XQ01/ANA.QOUT;32CP400XQ01/ANA.QOUT;32CP420XQ01/ANA.QOUT;32CP441XQ01/ANA.QOUT;32CP441XQ02/ANA.QOUT;32CP441XQ03/ANA.QOUT;32CP441XQ91/ANA.IN;32CP441XQ91/ANA.IN1;32CP441XQ91/ANA.IN2;32CP441XQ91/ANA.IN3;32CP442XQ01/ANA.QOUT;32CP442XQ02/ANA.QOUT;32CP442XQ03/ANA.QOUT;32CP442XQ91/ANA.IN;32CP442XQ91/ANA.IN1;32CP442XQ91/ANA.IN2;32CP442XQ91/ANA.IN3;32CP443XQ01/ANA.QOUT;32CP443XQ02/ANA.QOUT;32CP443XQ03/ANA.QOUT;32CP443XQ91/ANA.IN;32CP443XQ91/ANA.IN1;32CP443XQ91/ANA.IN2;32CP443XQ91/ANA.IN3;70CP415XQ01/ANA.QOUT;70CP415XQ02/ANA.QOUT;70CP415XQ03/ANA.QOUT;70CP415XQ91/ANA.IN;70CP415XQ91/ANA.IN1;70CP415XQ91/ANA.IN2;70CP415XQ91/ANA.IN3;FIC230/ASC.DISV;FIC230/ASC.FLOW;FIC230/ASC.HEAD;FIC230/ASC.P1_In;FIC230/ASC.P2_In;FIC230/ASC.PDT_In;FIC230/ASC.T1_In;FIC230/ASC.Y;FIC230/ASC.Z1_In;MASSFLOW_GT/ANA.QOUT;PIC202/PID.DISV;PIC202/PID.LMNR_IN_phy;PIC202/PID.OP_SP;PIC202/PID.PV_IN;PIC202/PID.PV_MAX;PIC202/PID.PV_MIN;PIC202/PID.QLMN_phy;PIC202/PID.QSP_Aktuell;PIC202/PID.SP_MAX;PIC202/PID.SP_MIN;PIC215/PID.LMNR_IN_phy;PIC215/PID.OP_SP;PIC215/PID.PV_IN;PIC215/PID.PV_MAX;PIC215/PID.PV_MIN;PIC215/PID.QLMN_phy;PIC215/PID.QSP_Aktuell;PIC215/PID.SP_MAX;PIC215/PID.SP_MIN
bastla
bastla 31.01.2013 um 12:13:27 Uhr
Goto Top
Hallo axfa77!

Hatte leider "!Name!" falsch geschrieben face-sad - ist jetzt oben korrigiert.

Grüße
bastla
axfa77
axfa77 31.01.2013 um 14:39:28 Uhr
Goto Top
Zitat von @bastla:
Hallo axfa77!

Hatte leider "!Name!" falsch geschrieben face-sad - ist jetzt oben korrigiert.

Grüße
bastla

Hallo,

allergrössten Respekt, es funktioniert!

Grosses DANKE! face-smile