anding
Goto Top

Textdatei per Batch editieren

Textdatei mit mehreren Zeilen soll bearbeitet werden!

Hallo!

Es soll per Batchdatei eine Textdatei editiert werden und zwar soll der letzte Teil einer jeden Zeilte weg:

"Text"|"Text"|"Zahlen"|"........"|"1"|"Test123"|"999"
"Bla bla"|"12345"|"XXXX"|"..X..."|"9"|"Test123"|"999"
"TX"|"Lalala"|"ZUEUEU"|".Y...V.."|"7"|"Test123"|"999"

Und von dieser Datei soll nun automatisch immer --> |"Test123"|"999" <-- weggenommen werden. Wie gehe ich da am besten vor?
Habt ihr eine Idee wie ich das Lösen könnte?

Content-ID: 202194

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

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

Snowman25
Snowman25 22.02.2013 aktualisiert um 11:49:41 Uhr
Goto Top
Hallo @anding,

sieht aus wie eine .CSV-Datei mit Pipes als Trennsymbol. Sind die Anzahl der Felder immer gleich? (Sind also immer gleich viele Pipes in einer Zeile vorhanden?)

Falls ja, kann man mit einer for-Schleife alle Felder einzeln auslesen, die Zeile wieder zusammenbauen und in eine neue Datei speichern. Ungefähr so:
SET test="Text"^|"text"^|355132^|"asdfoin"^|"Test123"^|"999"  
ECHO "%test%" >a.txt  
FOR /F "delims=^| tokens=1-9" %%a in ("%test%") do (  
	SET line=%%a^^^|%%b^^^|%%c^^^|%%d
)
ECHO %line%>>a.txt
PAUSE

Beachte die dreifachen Zirkumflexe. Diese sind zwingend notwendig, um die Pipes zu escapen.

Gruß
Snow
bastla
bastla 22.02.2013 um 13:16:33 Uhr
Goto Top
@ Snowman25

Sollte es nicht auch einfach
for /f "tokens=1-5 delims=|" %%a in (a.txt) do >>b.txt echo %%a^|%%b^|%%c^|%%d^|%%e
tun?

Grüße
bastla
Snowman25
Snowman25 22.02.2013 um 13:21:31 Uhr
Goto Top
Hi bastla,

Zumindest bei delims musst du deine pipe escapen.
sollte ansonsten auch so gehen, habs aber nicht getestet.

Gruß
Snow
bastla
bastla 22.02.2013 um 15:24:58 Uhr
Goto Top
Hallo Snowman25!
Zumindest bei delims musst du deine pipe escapen.
Nö - damit würdest Du nur das Caret ebenfalls zu einem Trennzeichen machen ...

Grüße
bastla