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-Key: 202194

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

Printed on: April 19, 2024 at 20:04 o'clock

Member: Snowman25
Snowman25 Feb 22, 2013 updated at 10:49:41 (UTC)
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
Member: bastla
bastla Feb 22, 2013 at 12:16:33 (UTC)
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
Member: Snowman25
Snowman25 Feb 22, 2013 at 12:21:31 (UTC)
Goto Top
Hi bastla,

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

Gruß
Snow
Member: bastla
bastla Feb 22, 2013 at 14:24:58 (UTC)
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