Batchdatei zum Eliminieren von Spalten in einer Textdatei
Aus einer Datentabelle, die als Textdatei vorliegt (Werte durch Kommas getrennt) sollen unerwünschten Spalten gelöscht und die so bearbeitete Datei unter einem anderen Namen im selben Verzeichnis abgespeichert werden.
Liebe Forenmitglieder,
dies ist mein erster Beitrag, ich bin ein "batch-Neuling" und würde mich sehr freuen, eure Hilfe zu bekommen. Mein Problem: Ich habe Daten, aus denen automatisch gewisse Spalten entfernt und die verbleibende Datei unter anderem Namen abgspeichert werden soll (wenn es funktioniert, dann soll das Procedere mittel Windows Taskplaner 1x stündlich selbsttätig ablaufen können).
Die Struktur sieht so aus:
"TOA5","Klimastation","CR1000","18857","CR1000.Std.15","CPU:Klimastation 2008-2009 mit ftp.CR1","51672","ftp"
"TIMESTAMP","RECORD","ppfd_Avg","Luft_Avg","Boden_Avg"
"TS","RN","","",""
"","","Avg","Avg","Avg"
"2008-12-29 19:06:00",1,0,-6.025,-0.171
"2008-12-29 19:07:00",2,0,-6.048,-0.181
"2008-12-29 19:08:00",3,0,-6.069,-0.162
"2008-12-29 19:09:00",4,0,-6.091,-0.142
"2008-12-29 19:10:00",5,0,-6.112,-0.171
"2008-12-29 19:11:00",6,0,-6.046,-0.142
"2008-12-29 19:12:00",7,0,-5.983,-0.181
usw....
Nun sollte z.B. die 2. Spalte (fortlaufende Zahl 1 2 3 4 5 6) eliminiert werden, der Rest unter anderem Namen, z.B. Klimadaten.txt abgespeichert werden.
Wenn dabei auch der gesamte Header, also dieser Inhalt ("TOA5","Klimastation","CR1000","18857","CR1000.Std.15","CPU:Klimastation 2008-2009 mit ftp.CR1","51672","ftp""TIMESTAMP","RECORD","ppfd_Avg","Luft_Avg","Boden_Avg""TS","RN","","","""","","Avg","Avg","Avg") ebenfalls entfernt würde, wäre es von zusätzlichem Nutzen.
Kann und möchte mir dabei jemand helfen? - ich würde mich freuen!
Saturn
Liebe Forenmitglieder,
dies ist mein erster Beitrag, ich bin ein "batch-Neuling" und würde mich sehr freuen, eure Hilfe zu bekommen. Mein Problem: Ich habe Daten, aus denen automatisch gewisse Spalten entfernt und die verbleibende Datei unter anderem Namen abgspeichert werden soll (wenn es funktioniert, dann soll das Procedere mittel Windows Taskplaner 1x stündlich selbsttätig ablaufen können).
Die Struktur sieht so aus:
"TOA5","Klimastation","CR1000","18857","CR1000.Std.15","CPU:Klimastation 2008-2009 mit ftp.CR1","51672","ftp"
"TIMESTAMP","RECORD","ppfd_Avg","Luft_Avg","Boden_Avg"
"TS","RN","","",""
"","","Avg","Avg","Avg"
"2008-12-29 19:06:00",1,0,-6.025,-0.171
"2008-12-29 19:07:00",2,0,-6.048,-0.181
"2008-12-29 19:08:00",3,0,-6.069,-0.162
"2008-12-29 19:09:00",4,0,-6.091,-0.142
"2008-12-29 19:10:00",5,0,-6.112,-0.171
"2008-12-29 19:11:00",6,0,-6.046,-0.142
"2008-12-29 19:12:00",7,0,-5.983,-0.181
usw....
Nun sollte z.B. die 2. Spalte (fortlaufende Zahl 1 2 3 4 5 6) eliminiert werden, der Rest unter anderem Namen, z.B. Klimadaten.txt abgespeichert werden.
Wenn dabei auch der gesamte Header, also dieser Inhalt ("TOA5","Klimastation","CR1000","18857","CR1000.Std.15","CPU:Klimastation 2008-2009 mit ftp.CR1","51672","ftp""TIMESTAMP","RECORD","ppfd_Avg","Luft_Avg","Boden_Avg""TS","RN","","","""","","Avg","Avg","Avg") ebenfalls entfernt würde, wäre es von zusätzlichem Nutzen.
Kann und möchte mir dabei jemand helfen? - ich würde mich freuen!
Saturn
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 104919
Url: https://administrator.de/forum/batchdatei-zum-eliminieren-von-spalten-in-einer-textdatei-104919.html
Ausgedruckt am: 16.05.2025 um 05:05 Uhr
2 Kommentare
Neuester Kommentar
Dafür bietet sich eine For-Schleife an (Hilfe mit "For /?" in der Eingabeaufforderung)
Zur funktion:
Dieser Batchdatei übergibst du zwei Parameter. Der erste ist die Datei mit den Orginaldaten die Gefiltert werden sollen, Der Zweite Parameter ist Der Name der Datei indie die neuen Daten geschreiben werden sollen.
Der For Befehl zerlegt jede Zeile in einzelne Elemente. Hie rist als Trennzeichen das "," angegeben (delims=,) Es werden die ersten 5 Elemente verarbeitet (tokens=1,2,3,4,5). Solte die Eingangsdatei also einmal mehr Elemente (Spalten) haben müsste dies angepast werden. Nach dem "Do" steht jedes Element in einer Variabeln, beginnend bei a. Diese werden mit dem
Wird eine Datei angegeben wie bereits existiert wird diese überschrieben.
miniversum
@echo off
dir "~%2" 1>NUL 2>NUL&&del "~%2" /Q
FOR /F "tokens=1,2,3,4,5 delims=," %%a in ('more +2 "%~1"') do >>"~%2" echo %%a,%%c,%%d,%%e
Dieser Batchdatei übergibst du zwei Parameter. Der erste ist die Datei mit den Orginaldaten die Gefiltert werden sollen, Der Zweite Parameter ist Der Name der Datei indie die neuen Daten geschreiben werden sollen.
Der For Befehl zerlegt jede Zeile in einzelne Elemente. Hie rist als Trennzeichen das "," angegeben (delims=,) Es werden die ersten 5 Elemente verarbeitet (tokens=1,2,3,4,5). Solte die Eingangsdatei also einmal mehr Elemente (Spalten) haben müsste dies angepast werden. Nach dem "Do" steht jedes Element in einer Variabeln, beginnend bei a. Diese werden mit dem
>>"~%2" echo ...
wieder in eine Batei geschrieben. Da die Variable %%b fehlt wird diese Spalte weggelassen.Wird eine Datei angegeben wie bereits existiert wird diese überschrieben.
more +2
Bewirkt das die ersten beiden Zeilen übersprungen werden.miniversum