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

Ausgedruckt am: 28.03.2024 um 10:03 Uhr

Mitglied: TK1987
Lösung TK1987 11.03.2020 um 15:28:17 Uhr
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
Mitglied: pscherf
pscherf 11.03.2020 um 16:14:40 Uhr
Goto Top
Hallo,
sieht gut aus.
vielen Dank für die schnelle Hilfe