pscherf
Goto Top

CSV per Batch ändern

Hallo zusammen!

Ich brauche Eure Hilfe.

Ich möchte in einer .csv Datei zwei Felder in Zeile drei zu einem Feld machen.

Trennzeichen ist ein ";" Zeichen

Vorher:

KUNDEN; NR140; KD-Name ;
;;ArtikelBez ;
;;CH;8157;DIELSDORF;
Art.-Nr.;Bezeichnung;;ME;Listenpreis;;Rabatt in %;;Mengenrabatt;;Kd.-NettoPreis;;Kd.-Endpreis;TZ;TZ;;Kd.-Endpreis incl. TZ;


In Zeile 3, Feld 3, "Länderkennzeichen" und Zeile 3, Feld 4 "PLZ" sollen zu einem (Feld 4) mit Leerschritt gemacht werden.
Feld 3 soll dann leer sein.

Nachher:

KUNDEN; NR140; KD-Name ;
;;ArtikelBez ;
;;;CH 8157;DIELSDORF;
Art.-Nr.;Bezeichnung;;ME;Listenpreis;;Rabatt in %;;Mengenrabatt;;Kd.-NettoPreis;;Kd.-Endpreis;TZ;TZ;;Kd.-Endpreis incl. TZ;


Habt Ihr da vielleicht was für mich ?

Content-Key: 556495

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

Printed on: April 28, 2024 at 11:04 o'clock

Member: TK1987
Solution TK1987 Mar 11, 2020 at 14:28:17 (UTC)
Goto Top
Moin.

Folgendes funktioniert nur, sofern die Zellen 1&2 in Zeile 3 immer leer sind. Sollte dem nicht so sein, einfach noch mal melden.
@echo off
SetLocal EnableDelayedExpansion

set Quelle=C:\PFAD\ZUR\QUELLDATEI.csv
set Ziel=C:\PFAD\ZUR\ZIELDATEI.csv

set count=0

for /f "Tokens=2 Skip=2 Delims=]" %%A in ('find /n /v "" "%Quelle%"') do (  
	set /a Count+=1
	if "!count!" equ "3" (for /f "Tokens=1,2,* Delims=;" %%B in ("%%A") do echo ;;;%%B %%C;%%D) else (echo %%A)  
	) >> "%Ziel%"  

PS: Bitte zukünftig auf die korrekte Forenkategorie achten. Die Frage gehört in "Batch & Shell", nicht in "Microsoft Office".

Gruß Thomas
Member: pscherf
pscherf Mar 11, 2020 at 15:14:40 (UTC)
Goto Top
Hallo,
sieht gut aus.
vielen Dank für die schnelle Hilfe