saturn
Goto Top

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

Content-Key: 104919

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

Printed on: May 7, 2024 at 12:05 o'clock

Member: miniversum
miniversum Dec 30, 2008 at 10:25:56 (UTC)
Goto Top
Dafür bietet sich eine For-Schleife an (Hilfe mit "For /?" in der Eingabeaufforderung)
@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  
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
>>"~%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
Member: saturn
saturn Dec 30, 2008 at 19:35:28 (UTC)
Goto Top
Hallo miniversum!

Ich bedsanke mich sehr herzlich für deine rasche und exzellente Hilfe. Ich bin deinen Anleitungen gefolgt und es funktioniert einwandfrei!!!

Ich freue mich sehr, denn nun kann ich in dieser Sache weiterarbeiten (möchte nämlich eine sich selbsttätig aktualisierende Grafik mit Klimadaten aus einer entfernten Station in meine HP einbauen. Nun steht meinemn Vorhaben nichts mehr entgegen...Danke nochmals!


saturn