cherti
Goto Top

Mittels batch eine texttabelle in csv format überführen und dabei einträge löschen

Ich möchte im Rahmen einer Bachelor Thesis die Konvertierung eines Datensatzes automatisieren. Die Daten werden in CATIA als *.txt abgespeichert und müssten dann gefiltert und als CSV abgespeichert werden. Idealerweise würde ich es gerne mit einer Batch Datei lösen - meine Erfahrungen diesbezüglich sind jedoch gleich Null (d.h. ich les mich nun seit etwa einer Woche durch dieses und diverse andere Foren, finde viele Ansätze aber keine passende Gesamtlösung)

Hallo miteinander,

wie im Vorwort bereits erwähnt, möchte ich im Rahemn einer Bachelor Thesis die Konvertierung einer Texttabelle zur CSV-Tabelle automatisieren.

Die Tabelle im .*txt Format und erstreckt sich über 46 Zeilen. Die Datei wird aus CATIA ausgegeben und enthält u.a. leider auch "unnütze Informationen".

Und mein Problem hat sich soeben verinfacht.
Die Tabelle sieht nun nurnoch wie folgt aus:

Ereignisnummer Befehlswert Sensoren Wert Einheit Kommentar
0 0 Abtastmechanismus\Verbindungen\Zylindrisch.4\Länge 0 Millimeter
1 0,355556 Abtastmechanismus\Verbindungen\Zylindrisch.4\Länge -0,000201002 Millimeter
2 0,711111 Abtastmechanismus\Verbindungen\Zylindrisch.4\Länge -0,00158531 Millimeter
3 1,06667 Abtastmechanismus\Verbindungen\Zylindrisch.4\Länge -0,00415748 Millimeter
4 1,42222 Abtastmechanismus\Verbindungen\Zylindrisch.4\Länge -0,007926 Millimeter
5 1,77778 Abtastmechanismus\Verbindungen\Zylindrisch.4\Länge -0,0129036 Millimeter
6 2,13333 Abtastmechanismus\Verbindungen\Zylindrisch.4\Länge -0,0191072 Millimeter
7 2,48889 Abtastmechanismus\Verbindungen\Zylindrisch.4\Länge -0,0265589 Millimeter

Ich bräuchte nun einen Befehl um die erste Zeile zu löschen und um aus den weiteren Zeilen die Spalten 2 und 4 zu nehmen und mit einem Semikolon zu tennen (der Rest soll ebenfalls übersprungen / gelöscht werden)

also quasi in die Form zu übertragen.....

0 ; 0
0,355556 ; -0,000201002
0,711111 ; -0,00158531
1,06667 ; -0,00415748
1,42222 ; -0,007926
1,77778 ; -0,0129036
2,13333 ; -0,0191072
2,48889 ; -0,0265589


Ich komm bisher leider nur so weit, jeweils eine Spalte einzeln auszulesen mittels

@echo off & setlocal enabledelayedexpansion

)
set "Alt=%CD%\Messwerte2.txt"
set "Neu=%CD%\Messwerte2.csv"

if exist "%Neu%" del "%Neu%"
for /f "usebackq tokens=2 delims=< >" %%i in ("%Alt%") do (
set "A=%%i"
>>"%Neu%" echo !A: =!
)


Vielleicht kann mir ja einer von euch beim Rest behilflich sein.


Danke im Voraus und freundliche Grüße
Joachim

Content-Key: 130198

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

Printed on: April 26, 2024 at 15:04 o'clock

Member: miniversum
miniversum Nov 25, 2009 at 11:46:42 (UTC)
Goto Top
Warum nicht einfach so? (ungetestet):
@echo off
set "Alt=%CD%\Messwerte2.txt"  
set "Neu=%CD%\Messwerte2.csv"  

if exist "%Neu%" del "%Neu%"  
for /f "skip=1 tokens=2,4 delims= " %%i in ("%Alt%") do >>"%Neu%" echo %%i ; %%j  
was das skip und tokens bewirkt kansnt du ind er hilfe zum For Befehl nachlesen
Member: cherti
cherti Nov 25, 2009 at 12:49:32 (UTC)
Goto Top
da tut sich leider nix

mindestensdreißigzeichenkommentar
Member: miniversum
miniversum Nov 25, 2009 at 15:14:37 (UTC)
Goto Top
Ändere mal beim for das
("%Alt%") do
in
('type "%Alt%"') do
Member: Biber
Biber Nov 25, 2009 at 17:10:23 (UTC)
Goto Top
Moin cherti,

willkommen im Forum.

Ich weiss nicht so genau, was die Unterschiede zwischen Bachelor und Bätcher sein mögen, aber...

Bei den Rumbätschern (zu denen ich mich auch zähle) gilt: "kompliziert wird es irgendwann von alleine."

Deshalb mach da nicht so einen pseudokomplexen Aufriss mit %Neu%, %Alt% und DelayedExpansion.

Am CMD-Prompt würde reichen (">" nicht mit eingeben, ist mein Prompt):
>for /f "skip=1 tokens=2,4 delims= " %i in (e:\schnipsel\messwerte2.txt) do @echo %i;%j;
0;0;
0,355556;-0,000201002;
0,711111;-0,00158531;
1,06667;-0,00415748;
1,42222;-0,007926;
1,77778;-0,0129036;
2,13333;-0,0191072;
2,48889;-0,0265589;

Im Batch müssten die einfachen %i und %j zu %%i und %%j werden und am Ende noch eine Umleitung ( >>pfad\Messwerte2.csv) angehängt werden.

Das war's aber auch.

Grüße
Biber
Member: cherti
cherti Nov 27, 2009 at 08:56:28 (UTC)
Goto Top
Nun, der Bätcher kennt sich im Batchen aus, der Bachelor in in meinem Fall in Mechatronik, sollte er zumindest ;)

Danke für eure Hilfestellungen, habs nun geschafft. Batchfile sieht nun wie folgt aus:

@echo off & setlocal enabledelayedexpansion 
  
)
set "Alt=%CD%\Messwerte2.txt"  
set "Neu=%CD%\Messwerte2.csv"  


if exist "%Neu%" del "%Neu%"  

for /f "usebackq skip=1 tokens=2,4 delims=<	>" %%i in ("%Alt%") do @echo %%i;%%j >>"%Neu%"  
Member: miniversum
miniversum Nov 27, 2009 at 11:46:02 (UTC)
Goto Top
Wenn du es nicht noch für was anderes brauchst, kannst du:
in Zeile 1: "& setlocal enabledelayedexpansion" weglasen
in Zeile 3: ")" weglasen
in Zeile 10: "usebackq" weglasen und bei delims die "<>". Leerzeichen brauchst du dann auch nur eines.