CSV Datei auslesen per Batch

Mitglied: LowMind

LowMind (Level 1) - Jetzt verbinden

21.07.2011 um 19:24 Uhr, 22541 Aufrufe, 7 Kommentare

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
Mitglied: Friemler
21.07.2011 um 19:57 Uhr
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
Bitte warten ..
Mitglied: bastla
22.07.2011 um 02:54 Uhr
... und falls die Datei nur "CSV" heißt, aber inhaltlich Deinem Beispiel entspricht (also als Trennzeichen "|" verwendet), ersetze delims=; durch delims=| ...

Grüße
bastla
Bitte warten ..
Mitglied: LowMind
22.07.2011 um 10:13 Uhr
Moin Friemler,

der Einzeiler ist schon fast perfekt, nur wofür stehen denn %b %c %d am Ende des Befehls.
Und die Datei heißt %e eigentlich soll sie ja wie die 5 Spalte heißen

Dadurch erhalte folgendes Ergebnis
235455;2135465;det;dtm;118300116 %b %c %d

Wie bekomm ich denn den Zeilenumbruch hin und evtl. auch das Semikolon weg?

Gruß
LowMind
Bitte warten ..
Mitglied: Friemler
22.07.2011 um 10:32 Uhr
Hallo LowMind,

%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
Bitte warten ..
Mitglied: LowMind
22.07.2011 um 10:42 Uhr
Hi Friemler,
Bastlas Anmerkung habe ich nicht übernommen - das "delims=" für das Trennzeichen steht - hab ich so begriffen. :-) face-smile

ich habe deine Befehlszeile so übernommen und erhalte die Fehler.

Das mit dem Zeilenumbruch hätte ich mal genauer beschreiben sollen. :-( face-sad ich möchte einen Zeilenumbruch nach dem auslesen der ersten beiden Spalten.

Ergebnis soll sein
235455;2135465;
det;dtm

Gruß Robin
Bitte warten ..
Mitglied: Friemler
22.07.2011 um 10:49 Uhr
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 Codeformatierung für Plain Text, damit ich auch wirklich den original Inhalt zu sehen bekomme, unbeeinflusst vom Rendering der Forumssoftware.

Gruß
Friemler
Bitte warten ..
Mitglied: LowMind
22.07.2011 um 11:05 Uhr
Hi Friemler,

einfach nur Danke, es funktioniert super.

Warum ich nur den Befehl "delims=" geschrieben habe, war eigentlich nur zur Erklärung gedacht, dass ich begriffen habe, dass ich dort auch andere Trennzeichen angeben kann, wo nach getrennt werden soll. :-) face-smile

Danke nochmal für die super Hilfe und ein schönes Wochenende

Gruß
LowMind
Bitte warten ..
Heiß diskutierte Inhalte
Windows 10
PDF automatisch auf zwei Drucker aufteilen
hannes.pVor 1 TagFrageWindows 109 Kommentare

Hallo zusammen, ich suche verzweifelt nach einer Möglichkeit, ein von einer Web-Anwendung generiertes PDF automatisch auf zwei Drucker drucken zu lassen. Das PDF Dokument ...

Microsoft
Erwerb von M365 Lizenzen, Partner Autorisierung für Azure AD - Globaler Administrator wirklich nötig?
NidavellirVor 1 TagFrageMicrosoft4 Kommentare

Hi zusammen, bitte entschuldigt den etwas sperrigen Titel, aber ein knapperer wollte mir nicht einfallen. :D Wir wollen bei einem Systemhaus M365 Lizenzen (Business ...

Windows 10
Sperrbildschirm nach 5 min
ZeppelinVor 1 TagFrageWindows 1012 Kommentare

Hallo zusammen, ich wende mich mit meinem anliegen an euch weil ich mit meinen Möglichkeiten am Ende bin. Wenn innerhalb von 5 min. keine ...

Speicherkarten
Welchen USB Stick für Bootstick?
gelöst dlnkrgVor 1 TagFrageSpeicherkarten6 Kommentare

Hallo, Ich bin auf der Suche nach USB - Sticks, auf denen ich Linux Ubuntu installieren kann und praktisch als Festplatte für das Betriebssystem ...

Off Topic
BKA und der Bundestrojaner
brammerVor 1 TagInformationOff Topic3 Kommentare

Hallo, habe kurz überlegt ob das unter Off Topic allgemein oder Off Topic LOL gehört brammer

Windows Netzwerk
Sporadisch kein Netz auf mehreren Win10-Maschinen
SolarflareVor 19 StundenFrageWindows Netzwerk6 Kommentare

Hallo, ich habe seit Monaten einen eigenartigen Effekt in unserem Windows-Netz. Windows-Domäne mit ca. 100 Maschinen, alle Clients aktuelles Windows 10. Die Maschinen hängen ...

Sicherheit
Emails als Nur Text
Jessica98Vor 1 TagFrageSicherheit4 Kommentare

Hallo zusammen, macht es Sinn E-Mails als nur Text einzustellen, um sich vor schädlichen HTML-Code zu schützen? Meines Erachtens wird ein Benutzer diese Email ...

Windows 7
Userpfad Problem nach Aenderung des Computernamens
BernerVor 1 TagFrageWindows 78 Kommentare

In einem Netzwerk von 9 PCs sind 9 Ersatz-PCs eingebunden, bei denen im Bedarfsfall vor dem Einsatz nur der Computername und die IP-Adresse angepasst ...