Batch: Zahlen in einer Spalte einer CSV Datei prüfen und ggf. austauschen
Hallo zusammen,
ich hoffe Ihr könnt mir helfen.
Auf einem unserer Server läuft eine Wawi. Aus dieser exportiere ich per Batch zweimal am Tag eine Stocklist für unsere Händler und lade diese per FTP auf einen webserver zum Download.
Bei der Erstellung der Exportvorlage habe ich allerdings nur die Möglichkeit den vollen Bestand oder den Verfügbaren Bestand anzuzeigen. Bei ersterem sind aber nicht die Artikel aus bestehenden Aufträgen abgezogen. Beim verfügbaren Bestand kann es zu Minusbeständen kommen.
Jetzt zu meinem Problem.
Ich würde gerne die Werte in Spalte 4 in meiner Stocklist_exp.csv wie folgt automatisch mit einer Batch ändern.
Wenn ein negativer Bestand also z.B. -4 enthalten ist soll er gegen eine Null ersetzt werden.
Zusätzlich wollen wir nicht unseren kompletten Bestand preisgeben. Daher soll alles was einen Bestand von mehr als 5 hat auf 6 gesetzt werden.
Danach soll die Datei unter stocklist.csv gespeichert werden.
Trennzeichen ist ein ; "Semikolon"
Die Datei hat ca. 10.000 Zeilen und in Spalte 3 ist nicht immer ein Wert.
Hier mal die ersten Zeilen dieser Datei incl. Überschrift.
"Artikelnummer";"Artikelname";"EAN/Barcode";"Verfügbar";"Netto EK";"UVP";
"ZTW-120000010";"LED Programm Card";;"5,00";"8,14";"10,95";
"ZTW-180000010-A";"LCD Program Card Beast 120A / Beast Pro 150A";;"14,00";"15,04";"19,95";
"DA-742215";"Dash 540 Sensored Brushless Motor 21.5T For AM Cup";"4895175921450 ";"0,00";"43,28";"63,99";
"SER-500021";"Serpent Spyder Buggy SDX4 EVO 1/10 EP";"8717135093402";"7,00";"327,60";"445,90";
"ZTW-4215032";"Brushless ESC 1:8 Beast PRO 150A";;"21,00";"68,38";"99,95";
"ZTW-BP4269-2D";"1:8 Scale 4 Pole Sensored Brushless 1950kv";;"12,00";"75,21";"119,95";
Vielen Dank für eure Hilfe.
ich hoffe Ihr könnt mir helfen.
Auf einem unserer Server läuft eine Wawi. Aus dieser exportiere ich per Batch zweimal am Tag eine Stocklist für unsere Händler und lade diese per FTP auf einen webserver zum Download.
Bei der Erstellung der Exportvorlage habe ich allerdings nur die Möglichkeit den vollen Bestand oder den Verfügbaren Bestand anzuzeigen. Bei ersterem sind aber nicht die Artikel aus bestehenden Aufträgen abgezogen. Beim verfügbaren Bestand kann es zu Minusbeständen kommen.
Jetzt zu meinem Problem.
Ich würde gerne die Werte in Spalte 4 in meiner Stocklist_exp.csv wie folgt automatisch mit einer Batch ändern.
Wenn ein negativer Bestand also z.B. -4 enthalten ist soll er gegen eine Null ersetzt werden.
Zusätzlich wollen wir nicht unseren kompletten Bestand preisgeben. Daher soll alles was einen Bestand von mehr als 5 hat auf 6 gesetzt werden.
Danach soll die Datei unter stocklist.csv gespeichert werden.
Trennzeichen ist ein ; "Semikolon"
Die Datei hat ca. 10.000 Zeilen und in Spalte 3 ist nicht immer ein Wert.
Hier mal die ersten Zeilen dieser Datei incl. Überschrift.
"Artikelnummer";"Artikelname";"EAN/Barcode";"Verfügbar";"Netto EK";"UVP";
"ZTW-120000010";"LED Programm Card";;"5,00";"8,14";"10,95";
"ZTW-180000010-A";"LCD Program Card Beast 120A / Beast Pro 150A";;"14,00";"15,04";"19,95";
"DA-742215";"Dash 540 Sensored Brushless Motor 21.5T For AM Cup";"4895175921450 ";"0,00";"43,28";"63,99";
"SER-500021";"Serpent Spyder Buggy SDX4 EVO 1/10 EP";"8717135093402";"7,00";"327,60";"445,90";
"ZTW-4215032";"Brushless ESC 1:8 Beast PRO 150A";;"21,00";"68,38";"99,95";
"ZTW-BP4269-2D";"1:8 Scale 4 Pole Sensored Brushless 1950kv";;"12,00";"75,21";"119,95";
Vielen Dank für eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 384601
Url: https://administrator.de/contentid/384601
Ausgedruckt am: 19.11.2024 um 13:11 Uhr
8 Kommentare
Neuester Kommentar
Servus, kannst du bspw. so abfackeln.
Grüße Uwe
@echo off
chcp 1252
powershell -Executionpolicy ByPass -NoProfile -Command "Import-Csv 'D:\Stocklist_exp.csv' -Delimiter ';'| %%{$betrag = [decimal]::Parse($_.Verfügbar,[cultureinfo]::GetCultureInfo('de')); if ($betrag -lt 0){$_.Verfügbar = 0}elseif($betrag -gt 5){$_.Verfügbar = 6};$_} | export-csv 'D:\stocklist.csv' -Delimiter ';' -NoTypeInformation -Encoding UTF8"
Ist doch schon fix und fertiger Batchcode . Do you need some glasses?
>>Klick<<
- Ein- und Ausgabepfade anpassen
STRG+A
STRG+C
- Batch öffnen
STRG+V
Wenn ich den Code so in eine Batch Datei einfüge uns ausführen lasse, bekomme ich folgende Fehlermeldnung
Deine Batch hat nicht das richtige Encoding(siehst du ja schon an den komischen Zeichen / Exponenten), deswegen kommt es mit den Umlauten im Code nicht zurecht! Also richtig z.B. als ANSI abspeichern und noch ein chcp 1252 in deine Batch, fertig.