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-ID: 556495

Url: https://administrator.de/forum/csv-per-batch-aendern-556495.html

Ausgedruckt am: 04.04.2025 um 04:04 Uhr

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