Batch Sortierung und Ausgabe
Hallo Kollegen,
ich habe hier ein kleines Verständnissproblem mit einer Batch Datei.
Ich will eine csv Datei mit ; Trennung aufsplitten.
In Zeile 2 beginnen die Daten die ich brauche.
AB Spalte 1 bis Spalte 25 stehen die Daten zum ausgeben.
Sortierung Daten1 Daten2
12354323 assad gdfg
12354323 dgfsgfsd gdfg
12354323 sdf gdsgs
32452342 dsgf dsgds
32452342 sdf dsgds
1254353 dsf gfhfd
1254353 sdfds ztrurt
Ich will es schaffen das neue CSV Dateien mit allen gleichen Inhalten von "Sortierung" in eine Datei mit den Namen der ersten Spalte geschrieben wird bis zum Ende der Zeilen.
Also 12354323.csv mit Inhalt:
12354323 assad gdfg
12354323 dgfsgfsd gdfg
12354323 sdf gdsgs
Wie ich die Schleife mache ist mir klar nur wie frage ich auf gleichen Inhalt in der Schleife ab und Speichere diese dann in den Dateien.
Wäre Super wenn mir hier jemand auf die Sprünge helfen könnte.
ich habe hier ein kleines Verständnissproblem mit einer Batch Datei.
Ich will eine csv Datei mit ; Trennung aufsplitten.
In Zeile 2 beginnen die Daten die ich brauche.
AB Spalte 1 bis Spalte 25 stehen die Daten zum ausgeben.
Sortierung Daten1 Daten2
12354323 assad gdfg
12354323 dgfsgfsd gdfg
12354323 sdf gdsgs
32452342 dsgf dsgds
32452342 sdf dsgds
1254353 dsf gfhfd
1254353 sdfds ztrurt
Ich will es schaffen das neue CSV Dateien mit allen gleichen Inhalten von "Sortierung" in eine Datei mit den Namen der ersten Spalte geschrieben wird bis zum Ende der Zeilen.
Also 12354323.csv mit Inhalt:
12354323 assad gdfg
12354323 dgfsgfsd gdfg
12354323 sdf gdsgs
Wie ich die Schleife mache ist mir klar nur wie frage ich auf gleichen Inhalt in der Schleife ab und Speichere diese dann in den Dateien.
Wäre Super wenn mir hier jemand auf die Sprünge helfen könnte.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 366074
Url: https://administrator.de/contentid/366074
Ausgedruckt am: 23.11.2024 um 09:11 Uhr
9 Kommentare
Neuester Kommentar
Hi,
mit deiner Schleife durchläuft du doch jeden Datensatz oder ?
Dann brauchst du nur prüfen ob eine Datei mit dem Namen aus der ersten Spalte existiert. Wenn, dann Daten anhängen ">>", wenn nicht erstellen und Einfügen ">"
Etwa so: (kenne mich in Batch nicht gut aus)
~Arano
mit deiner Schleife durchläuft du doch jeden Datensatz oder ?
Dann brauchst du nur prüfen ob eine Datei mit dem Namen aus der ersten Spalte existiert. Wenn, dann Daten anhängen ">>", wenn nicht erstellen und Einfügen ">"
Etwa so: (kenne mich in Batch nicht gut aus)
for %%a in datei.csv do (
for token=" " %%b in %a do (
if existsts "%b.csv" (
:: anfügen
echo "%b %c %d..." >>"%a.csv"
) else (
:: neu
echo "%b %c %d..." >>"%a.csv"
)
)
)
~Arano
Zeilenumbrüche im Wert sind (im Fall von aus Excel exportierten Daten) einzeln stehende Line Feed Zeichen. Das ist exakt das Zeichen, das auch in der Verarbeitung per Batch als Zeilenumbruch ausgewertet wird. Das bei Windows normalerweise noch voranstehende Carriage Return Zeichen am Ende der Zeile wird verworfen, sodass auch der reguläre Zeilenumbruch nur noch als Line Feed stehen bleibt. Soll heißen, hier ist mit Batch keine Lösung in Sicht weil der Kommandozeileninterpreter keinen Unterschied erkennt. Andere Scriptsprachen können so etwas händeln. Mal sehen ob sich noch jemand aus der Powershellfraktion in dieses Thread verirrt. Zur Not könnte ich mit VBScript oder JScript aushelfen...
Steffen
Steffen
Zitat von @Xerebus:
Und mit Batch sehe ich keine Möglichkeit die LF zu löschen und die CR LF unberührt zu lassen.
Das ist richtig. Wenn du sie allerdings nicht benötigst, dann löschst du sie eben anderweitig.Und mit Batch sehe ich keine Möglichkeit die LF zu löschen und die CR LF unberührt zu lassen.
*.bat
@if (@a)==(@b) @end /*
@echo off & setlocal
cscript //nologo //e:jscript "%~fs0" "datei.csv"
:: etc.
goto :eof */
var oFSO = WScript.CreateObject('Scripting.FileSystemObject');
var s = oFSO.OpenTextFile(WScript.Arguments(0)).ReadAll();
oFSO.OpenTextFile(WScript.Arguments(0), 2).Write(s.replace(/\r\n/g, '\r\r').replace(/\n/g, ' ').replace(/\r\r/g, '\r\n'));