pscherf

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 ?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 556495

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

Ausgedruckt am: 05.05.2025 um 12:05 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