simonpeter
Goto Top

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

Content-ID: 89074

Url: https://administrator.de/contentid/89074

Ausgedruckt am: 23.11.2024 um 18:11 Uhr

SnowStar
SnowStar 04.06.2008 um 09:35:19 Uhr
Goto Top
Hallo,

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
das hier:
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
Biber
Biber 04.06.2008 um 10:55:50 Uhr
Goto Top
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:
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
SimonPeter
SimonPeter 04.06.2008 um 12:03:18 Uhr
Goto Top
Das ist ja der Wahnsinn hier! Vielen Dank für die schnellen Antworten.

@Biber: Die erste Zeile soll so bestehen bleiben wie sie ist (und auch als solche übernommen werden) aber eben nicht geändert, rsp ergänzt mit einem ";"

Merci und Kompliment!

Simon
Biber
Biber 04.06.2008 um 12:40:06 Uhr
Goto Top
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.
::-- 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]
SimonPeter
SimonPeter 04.06.2008 um 13:21:50 Uhr
Goto Top
"*.csv" --> Bist mein Held! face-smile

Eins auf die Schnauze hat er bereits erhalten...

Probiere es asap aus.

Simon
SimonPeter
SimonPeter 04.06.2008 um 13:46:03 Uhr
Goto Top
Error Zeile 5: "i" ist syntaktisch an dieser Stelle nicht verarbeitbar

Was 'n hier los?

Merci!

Simon
Biber
Biber 04.06.2008 um 13:49:30 Uhr
Goto Top
Moin SimonPeter,

Error Zeile 5: "i" ist syntaktisch
Sorry, mein Fehler.
In Batchdateien alle "%i"-Variablen mit 2 %-Zeichen schreiben.
Direkt am CMD-Prompt mit einem %-Zeichen.
ich korrigiere es oben.

Grüße
Biber
SimonPeter
SimonPeter 04.06.2008 um 14:05:37 Uhr
Goto Top
Super, hat geklappt! - Selten ein so engagiertes Forums-Team getroffen!

Vielen, herzlichen Dank. I owe you...

Simon
bastla
bastla 04.06.2008 um 14:05:41 Uhr
Goto Top
... und falls das noch jeweils am Ende angefügte Leerzeichen stören sollte:
...
for /f "skip=1 delims=" %%i in (test.txt) do @echo %%i;>>test_neu.txt  
Grüße
bastla