Per Batch-Job Zeichen einfügen in txt
Hallo Batch-Experten
Hoffentlich nimmt es mir niemand übel, wenn ich mich anmelde und nichts besseres weiss, als gleich eine Frage zu stellen...
Folgendes Problem, welches ich gerne mit einem Batch Job erledigen würde:
Eine Datei, welche aus einer Applikation in eine txt exportiert wird, muss in jeder Zeile um ein ";" ergänzt werden (Leider ist dieses Manko zur Zeit nicht anders zu beheben)
Der Inhalt sieht in etwa folgendermassen aus:
Datum;Text1;Text2;Text3;Text4;Text5;Text6;Text7;Text8;Text9
02.06.2008;Antwort1;Antwort2;;;Antwort3;;Antwort4;;;;;;;;Antwort5;;;;;;;;;;;;;;;;;;
03.06.2008;Antwort6;Antwort7;;;;;;Antwort8;;;Antwort9;;;;;;;;;;;;;;;;;;
etc...
etc...
Ab der zweiten Zeile muss bei der letzten Sammlung von ";" jeweils eins hinzugefügt werden.
Die Zeilen sind unterschiedlich lang und jeweils durch unterschiedlich viele ";" ergänzt.
Wäre für Tipps und Hinweise sehr dankbar!
Merci aus der Schweiz
Simon
Hoffentlich nimmt es mir niemand übel, wenn ich mich anmelde und nichts besseres weiss, als gleich eine Frage zu stellen...
Folgendes Problem, welches ich gerne mit einem Batch Job erledigen würde:
Eine Datei, welche aus einer Applikation in eine txt exportiert wird, muss in jeder Zeile um ein ";" ergänzt werden (Leider ist dieses Manko zur Zeit nicht anders zu beheben)
Der Inhalt sieht in etwa folgendermassen aus:
Datum;Text1;Text2;Text3;Text4;Text5;Text6;Text7;Text8;Text9
02.06.2008;Antwort1;Antwort2;;;Antwort3;;Antwort4;;;;;;;;Antwort5;;;;;;;;;;;;;;;;;;
03.06.2008;Antwort6;Antwort7;;;;;;Antwort8;;;Antwort9;;;;;;;;;;;;;;;;;;
etc...
etc...
Ab der zweiten Zeile muss bei der letzten Sammlung von ";" jeweils eins hinzugefügt werden.
Die Zeilen sind unterschiedlich lang und jeweils durch unterschiedlich viele ";" ergänzt.
Wäre für Tipps und Hinweise sehr dankbar!
Merci aus der Schweiz
Simon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 89074
Url: https://administrator.de/contentid/89074
Ausgedruckt am: 23.11.2024 um 18:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo,
vielleicht hilft dir das hier (ein wenig) weiter:
Die test.txt wird Zeilenweise ausgelesen, die ausgelesene Zeile mit einem Semikolon am Ende wieder ausgegeben, diese Ausgabe wird an die test_neu.txt angehängt (sie sollte also am besten noch nicht existieren oder leer sein).
Aber ACHTUNG: Leerzeilen werden übersprungen, d.h. nicht abgebildet. So wird aus:
das hier:
Hoffe es hilft dir trotzdem!
Gruß
Snow
vielleicht hilft dir das hier (ein wenig) weiter:
for /f %i in (test.txt) do @echo %i; >> test_neu.txt
Die test.txt wird Zeilenweise ausgelesen, die ausgelesene Zeile mit einem Semikolon am Ende wieder ausgegeben, diese Ausgabe wird an die test_neu.txt angehängt (sie sollte also am besten noch nicht existieren oder leer sein).
Aber ACHTUNG: Leerzeilen werden übersprungen, d.h. nicht abgebildet. So wird aus:
Dies ist die erste Zeile
Dies ist die zweite Zeile
Dies ist die vierte Zeile
Dies ist die fünfte Zeile
Dies ist die erste Zeile;
Dies ist die zweite Zeile;
Dies ist die vierte Zeile;
Dies ist die fünfte Zeile;
Hoffe es hilft dir trotzdem!
Gruß
Snow
Moin SimonPeter,
willkommen im Forum.
Nur ergänzende Anmerkung zu SnowStars Lösung.
a) sicherheitshalber solltest Du noch ein "delims=" ergänzen, da sonst nur bis zum ersten Leerzeichen in der zeile gelesen wird (falls eines da sein sollte)
b) es ist nicht zu ändern, dass Du in eine neue Datei scheiben musst - Du kannst nicht direkt die vorhandene "ändern". Bestenfalls hinterher die "neue Datei" über die "alte Datei" kopieren/moven.
Modifizierter CMD-Prompt-Ansatz:
P.S. Nachfrage.
Grüße
Biber
willkommen im Forum.
Nur ergänzende Anmerkung zu SnowStars Lösung.
a) sicherheitshalber solltest Du noch ein "delims=" ergänzen, da sonst nur bis zum ersten Leerzeichen in der zeile gelesen wird (falls eines da sein sollte)
b) es ist nicht zu ändern, dass Du in eine neue Datei scheiben musst - Du kannst nicht direkt die vorhandene "ändern". Bestenfalls hinterher die "neue Datei" über die "alte Datei" kopieren/moven.
Modifizierter CMD-Prompt-Ansatz:
for /f "delims=" %i in (test.txt) do @echo %i; >> test_neu.txt
P.S. Nachfrage.
Ab der zweiten Zeile muss bei der letzten Sammlung von ";" jeweils eins hinzugefügt werden.
??? Kann ich kaum glauben. Nicht plausibel. Soll die erste Zeile ganz übersprungen werden (nicht in "DateiNeu" ubernommen)??Grüße
Biber
Moin SimonPeter,
wenn die erste (Kopf-)Zeile in der *.csv-Datei tatsächlich "richtig" ist und alle Datenzeilen ein Feld zu wenig haben...
a) hau dem "Programmierer" des Datenexports eins auf die Schnauze und sag "Schönen Gruß von Biber"
b) ändere den Ablauf wie folgt.
Grüße
Biber
[Edit] Bugfix doppeltes %-Zeichen. siehe unten.[/Edit]
[Edit2] Unnötiges Leerzeichen vor dem ">>" entfernt. Siehe bastlas Hinweis unten.[/Edit2]
wenn die erste (Kopf-)Zeile in der *.csv-Datei tatsächlich "richtig" ist und alle Datenzeilen ein Feld zu wenig haben...
a) hau dem "Programmierer" des Datenexports eins auf die Schnauze und sag "Schönen Gruß von Biber"
b) ändere den Ablauf wie folgt.
::-- snipp CsvKorr.cmd
@echo off & setlocal
Set /p ersteZeile=<test.txt
echo %ersteZeile%>test_neu.txt
for /f "skip=1 delims=" %%i in (test.txt) do @echo %%i;>>test_neu.txt
>::-- snapp CsvKorr.cmd
Grüße
Biber
[Edit] Bugfix doppeltes %-Zeichen. siehe unten.[/Edit]
[Edit2] Unnötiges Leerzeichen vor dem ">>" entfernt. Siehe bastlas Hinweis unten.[/Edit2]