Spalten in einer .csv anders anordnen oder tauschen
Hallo ich habe mich jetzt hier im Forum angemeldet und hoffe, hier hilfe für mein Problem zu bekommen.
Leider habe ich noch nie mit Batch gearbeitet und in den letzten Tagen einige kleine selber erstellt die auch wunderbar laufen.
Doch ich habe das Gefühle, dass die Nummer etwas zu gross ist für mich. (bis jetzt)
Nun mein Anliegen
Unser Handscanner gibt eine Textdatei aus die so aussieht.
00001;Artikel;4040056003842;2;2.0;15.03.2011
00001;Artikel;4040056003743;2;1.0;15.03.2011
00001;Artikel;4040056002173;2;7.0;15.03.2011
00001;Artikel;4040056040854;2;5.0;15.03.2011
00001;Artikel;4040056040311;2;3.0;15.03.2011
00001;Artikel;4040056040335;2;8.0;15.03.2011
00001;Artikel;4040056040823;2;14.;15.03.2011
00001;Artikel;4040056020283;2;3.0;15.03.2011
00001;Artikel;4040056020429;2;1.0;15.03.2011
00001;Artikel;4040056002036;2;1.0;15.03.2011
Die 00001 steht für das Lager und kann auch eine andere Nummer enthalten.
Artikel Ist eine Angabe die immer in Feld 2 steht.
Nun müss ich das ganze in eine .csv Datei haben und den Inhalt der Spalte 1 in Spalte 2 haben und den Inhalt der Spalte 2 ind 1 haben.
das ändern der Dateiendung ist kein Problem, aber wie bekommt man die Spalten getauscht?
copy Test.txt Text.csv bewirkt lediklich nur, dass eine kopie der Test.txt in Test.csv angelegt wird.
Die Dateien können alle im gleichem Ordner liegen bleiben.
Hoffe ich habe mich verständlich ausgedrückt und nichts wichtiges vergessen.
Underdog81
Leider habe ich noch nie mit Batch gearbeitet und in den letzten Tagen einige kleine selber erstellt die auch wunderbar laufen.
Doch ich habe das Gefühle, dass die Nummer etwas zu gross ist für mich. (bis jetzt)
Nun mein Anliegen
Unser Handscanner gibt eine Textdatei aus die so aussieht.
00001;Artikel;4040056003842;2;2.0;15.03.2011
00001;Artikel;4040056003743;2;1.0;15.03.2011
00001;Artikel;4040056002173;2;7.0;15.03.2011
00001;Artikel;4040056040854;2;5.0;15.03.2011
00001;Artikel;4040056040311;2;3.0;15.03.2011
00001;Artikel;4040056040335;2;8.0;15.03.2011
00001;Artikel;4040056040823;2;14.;15.03.2011
00001;Artikel;4040056020283;2;3.0;15.03.2011
00001;Artikel;4040056020429;2;1.0;15.03.2011
00001;Artikel;4040056002036;2;1.0;15.03.2011
Die 00001 steht für das Lager und kann auch eine andere Nummer enthalten.
Artikel Ist eine Angabe die immer in Feld 2 steht.
Nun müss ich das ganze in eine .csv Datei haben und den Inhalt der Spalte 1 in Spalte 2 haben und den Inhalt der Spalte 2 ind 1 haben.
das ändern der Dateiendung ist kein Problem, aber wie bekommt man die Spalten getauscht?
copy Test.txt Text.csv bewirkt lediklich nur, dass eine kopie der Test.txt in Test.csv angelegt wird.
Die Dateien können alle im gleichem Ordner liegen bleiben.
Hoffe ich habe mich verständlich ausgedrückt und nichts wichtiges vergessen.
Underdog81
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 162850
Url: https://administrator.de/forum/spalten-in-einer-csv-anders-anordnen-oder-tauschen-162850.html
Ausgedruckt am: 24.12.2024 um 13:12 Uhr
13 Kommentare
Neuester Kommentar
Hallo Underdog81!
Dann zB:
[Edit]
[ungetestet]
... jetzt aber korrigiert ...
[/Edit]
Grüße
bastla
Dann zB:
@echo off & setlocal
set "Ordner=D:\Scannerdaten"
pushd "%Ordner%"
for /f "delims=" %%d in ('dir /b /a-d *.txt') do (
del "%%~nd.csv" 2>nul
for /f "usebackq tokens=1,2* delims=;" %%i in ("%%d") do >>"%%~nd.csv" echo %%j;%%i;%%k
del "%%d"
)
popd
[ungetestet]
... jetzt aber korrigiert ...
[/Edit]
Grüße
bastla
Moin Underdog81.
Na ja, einigen wir uns auf die Formulierung "ich habe schon wieder eine neue Anforderung".
Ein bisschen mit Batch rumalbern ist etwas anderes, als sich um Probleme zu kümmern.
Mach also bitte nicht so viel Wind damit. Wir antworten auch so
Diese Beschreibung findest du in zwei Schritten
a) die Hilfe "FOR /?" am CMD-Prompt, und da die FOR /F und "token"-Beschreibung
b) und wenn sich dein Blutdruck danach wieder gesenkt hat hier im Forum bei einer Suche nach "FOR-Tutorial" und unzähligen FOR/F-Basteleien - einfach die Suchfunktion benutzen.
Wenn wenn wenn es DANN nicht klappt, dann nochmal nachhaken.
Aber eine Stunde Vorsprung bekommst du erstmal.
Grüße
Biber
[Edit] uups...schon erledigt... Schönes Wochenende @Underdog81 [/Edit]
Na ja, einigen wir uns auf die Formulierung "ich habe schon wieder eine neue Anforderung".
Ein bisschen mit Batch rumalbern ist etwas anderes, als sich um Probleme zu kümmern.
Mach also bitte nicht so viel Wind damit. Wir antworten auch so
Am liebsten wäre eine beschreibung womit ich selber eine .bat bauen kann.
Diese Beschreibung findest du in zwei Schritten
a) die Hilfe "FOR /?" am CMD-Prompt, und da die FOR /F und "token"-Beschreibung
b) und wenn sich dein Blutdruck danach wieder gesenkt hat hier im Forum bei einer Suche nach "FOR-Tutorial" und unzähligen FOR/F-Basteleien - einfach die Suchfunktion benutzen.
Aber eine Stunde Vorsprung bekommst du erstmal.
Grüße
Biber
[Edit] uups...schon erledigt... Schönes Wochenende @Underdog81 [/Edit]
Hallo Underdog81!
Die "tokens" sind die Teile der Zeile (= Spalten oder Felder der CSV), die durch Zerlegung anhand des/r Trennzeichen/s "delims" entstehen, wobei die Angabe "1,3*" bedeutet: Nimm Spalte 1, Spalte 3 und alles danach, ohne weiter zu zerlegen, und stelle die Teile in der Reihenfolge "%%i", "%%j", "%%k" zur Verfügung ...
Grüße
bastla
ich habe einfach mal etwas versucht und habe aus der 2 eine 3 gemacht und es hat geklappt.
Damit Du auch weißt, warum:Die "tokens" sind die Teile der Zeile (= Spalten oder Felder der CSV), die durch Zerlegung anhand des/r Trennzeichen/s "delims" entstehen, wobei die Angabe "1,3*" bedeutet: Nimm Spalte 1, Spalte 3 und alles danach, ohne weiter zu zerlegen, und stelle die Teile in der Reihenfolge "%%i", "%%j", "%%k" zur Verfügung ...
Grüße
bastla