CSV Datei auslesen per Batch
Hallo,
folgendes Problem bereitet mir gerade Kopfzerbrechen.
Ich möchte eine CSV Datei auslesen und zwar die ersten 4 Spalten einer Zeiel - in der 5 Spalte steht der Wert, der als Dateiname übernommen werden soll.
Jede Zeile soll eine Datei sein.
Bsp. CSV Datei
235456 | 1205435 | det | dtm | 118303111
234566 | 1205515 | det | dtm | 118300112
235455 | 2135465 | det | dtm | 118300116
Ergebnis Dateiname 118303111.txt
Inhalt 235456 1205435 det dtm
Ergebnis Dateiname 118300112.txt
Inhalt 235466 1205515 det dtm
Ergebnis Dateiname 118300116.txt
Inhalt 235455 2135465 det dtm
Ist sowas überhaupt per Batch möglich? Und kann man einen Zeilenumbruch programmieren!
Danke für eure Hilfe
Gruß
LowMind
folgendes Problem bereitet mir gerade Kopfzerbrechen.
Ich möchte eine CSV Datei auslesen und zwar die ersten 4 Spalten einer Zeiel - in der 5 Spalte steht der Wert, der als Dateiname übernommen werden soll.
Jede Zeile soll eine Datei sein.
Bsp. CSV Datei
235456 | 1205435 | det | dtm | 118303111
234566 | 1205515 | det | dtm | 118300112
235455 | 2135465 | det | dtm | 118300116
Ergebnis Dateiname 118303111.txt
Inhalt 235456 1205435 det dtm
Ergebnis Dateiname 118300112.txt
Inhalt 235466 1205515 det dtm
Ergebnis Dateiname 118300116.txt
Inhalt 235455 2135465 det dtm
Ist sowas überhaupt per Batch möglich? Und kann man einen Zeilenumbruch programmieren!
Danke für eure Hilfe
Gruß
LowMind
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 170201
Url: https://administrator.de/contentid/170201
Ausgedruckt am: 23.11.2024 um 18:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo LowMind,
das erfordert lediglich einen Oneliner direkt auf der Kommandozeile:
In einem Batchfile müssen die Prozentzeichen verdoppelt werden.
Es kostet schon etwas Aufwand, keinen Zeilenumbruch beim Ausgeben von Werten zu erzeugen.
Gruß
Friemler
das erfordert lediglich einen Oneliner direkt auf der Kommandozeile:
for /f "usebackq tokens=1-5 delims=;" %a in ("Datei.csv") do @(>"%e" echo %a %b %c %d)
Es kostet schon etwas Aufwand, keinen Zeilenumbruch beim Ausgeben von Werten zu erzeugen.
Gruß
Friemler
Hallo LowMind,
%b, %c, %d und %e sind automatisch erzeugte Laufvariablen der
Zur Fehlfunktion:
Du hast wahrscheinlich bastlas Rat befolgt, ohne ihn genau verstanden zu haben. Du hast ja anscheinend Semikolons als Trennzeichen in Deiner CSV-Datei, also musst Du meine Befehlszeile unverändert übernehmen.
Dein Problem mit dem angeblich fehlenden Zeilenumbruch verstehe ich nicht. Die Ausgabe wird auf jeden Fall mit einem Zeilenumbruch abgeschlossen. Das kannst Du überprüfen, indem Du die erzeugten Dateien in einen Texteditor lädst.
Gruß
Friemler
%b, %c, %d und %e sind automatisch erzeugte Laufvariablen der
FOR
-Schleife. Automatisch erzeugt wegen tokens=1-5
; dadurch wird FOR
angewiesen, die Eingabedaten in 5 Teile (Tokens) zu zerlegen, für die 5 Variablen erstellt werden. Die Namen kommen dadurch zustande, dass ich in der Befehlszeile die Variable %a angegeben habe. Die automatisch erzeugten Variablen erhalten immer Namen, die vom Namen der angegebenen Variable ausgehend in alphabetisch aufsteigender Reihenfolge erzeugt werden. Als Markierung, wodurch die 5 Teile der Eingabedaten voneinander abgegrenzt werden, dient wegen delims=;
das Semikolon. Siehe auch mein Tutorial zur FOR-Schleife.Zur Fehlfunktion:
Du hast wahrscheinlich bastlas Rat befolgt, ohne ihn genau verstanden zu haben. Du hast ja anscheinend Semikolons als Trennzeichen in Deiner CSV-Datei, also musst Du meine Befehlszeile unverändert übernehmen.
Dein Problem mit dem angeblich fehlenden Zeilenumbruch verstehe ich nicht. Die Ausgabe wird auf jeden Fall mit einem Zeilenumbruch abgeschlossen. Das kannst Du überprüfen, indem Du die erzeugten Dateien in einen Texteditor lädst.
Gruß
Friemler
Hallo LowMind;
"delims=" ist falsch, es muss "delims=;" heißen.
Btr. Deine neue Anforderung:
Und wenn es jetzt immer noch nicht funktioniert, poste bitte den Inhalt Deiner CSV-Datei unter Verwendung der , damit ich auch wirklich den original Inhalt zu sehen bekomme, unbeeinflusst vom Rendering der Forumssoftware.
Gruß
Friemler
"delims=" ist falsch, es muss "delims=;" heißen.
Btr. Deine neue Anforderung:
for /f "usebackq tokens=1-5 delims=;" %a in ("Datei.csv") do @>"%e" (echo %a %b&echo.&echo %c %d)
Und wenn es jetzt immer noch nicht funktioniert, poste bitte den Inhalt Deiner CSV-Datei unter Verwendung der , damit ich auch wirklich den original Inhalt zu sehen bekomme, unbeeinflusst vom Rendering der Forumssoftware.
Gruß
Friemler