Batchdatei - entfernen von vorlaufenden Nullen in 2 Spalten
Hallo Leute,
folgende Situation:
Ich bekomme einen Lagerbestand von einem Vorlieferanten welchen ich per FTP runterladen muss.
Das Problem an der Sache ist das der Lieferant die Datei so liefert das bspw. bei einer Artikelnummer 650321 => 000000650321
Das gleiche Problem besteht in Spalte 2 wo die Anzahl des Lagerbestandes angegeben ist.
Gibt es eine Möglichkeit nachdem die Datei heruntergeladen ist die beiden spalten zu modifizieren !
Liebe Grüße
Timo Tyrakowski
folgende Situation:
Ich bekomme einen Lagerbestand von einem Vorlieferanten welchen ich per FTP runterladen muss.
Das Problem an der Sache ist das der Lieferant die Datei so liefert das bspw. bei einer Artikelnummer 650321 => 000000650321
Das gleiche Problem besteht in Spalte 2 wo die Anzahl des Lagerbestandes angegeben ist.
Gibt es eine Möglichkeit nachdem die Datei heruntergeladen ist die beiden spalten zu modifizieren !
Liebe Grüße
Timo Tyrakowski
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 262901
Url: https://administrator.de/contentid/262901
Ausgedruckt am: 19.11.2024 um 22:11 Uhr
11 Kommentare
Neuester Kommentar
Moin
Beispiel wie das mit Batch geht:
oder mit Powershell
Gruß jodel32
Beispiel wie das mit Batch geht:
for /f "tokens=* delims=0" %%a in ("000000650321") DO @echo %%a
"000000650321" -replace '^0*',''
Zitat von @modernsolution:
und vorallem war die Artikelnummer nur ein beispiel ... es müssten alle Zeilen der Spalte verändert werden !
Schon klar, das geht aber mit jeder deiner Nummern , aber dir muss man es wieder vorbeten ...und vorallem war die Artikelnummer nur ein beispiel ... es müssten alle Zeilen der Spalte verändert werden !
Wie sieht denn die CSV-Datei aus ?? Trennzeichen, Überschriften, etc pp / Sonderzeichen ?.
Aber bitte bitte nutze Code-Tags für deinen Quellcode!
p.s. CSV-Dateien sind mit Powershell zuverlässiger handlebar ...
$csv = Import-CSV "C:\temp\demo.csv" -Delimiter ";"
$csv | %{
$_.artikelnr = $_.artikelnr -replace '^0*',''
$_.lagerbestand = $_.lagerbestand -replace '^0*',''
$_.liefertermin = $_.liefertermin -replace '^0*',''
}
$csv | export-csv "C:\temp\demo_out.csv" -Delimiter '|' -NoTypeInformation
Siehe oben... und nicht vergessen die Spaltennamen anzupassen...
Wenn die Spaltennamen Leerzeichen haben müssen sie in einfache Anführungszeichen eingeschlossen werden (')...
Wenn die Spaltennamen Leerzeichen haben müssen sie in einfache Anführungszeichen eingeschlossen werden (')...
ok dann hast du eine ältere PS Version, dann machs so das geht auf jeden Fall auch bei dir:
$csv = Import-CSV "C:\Batch\lagerbestand.csv" -Delimiter ";"
$csv | %{
$_.artikelnr = $_.artikelnr -replace '^0*',''
$_.lagerbestand = $_.lagerbestand -replace '^0*',''
$_.liefertermin = $_.liefertermin -replace '^0*',''
}
$csv | export-csv "C:\Batch\Lagerbestand_out.csv" -Delimiter '|' -NoTypeInformation
Zitat von @modernsolution:
passt soweit einzieges problem ist nun das er bei lagerbestand 0 nichts ausgibt ... sprich in spalte 2 "lagerbestand"
müsste er im besten fall wenn dort nur 0 vorkommt eine null stehen lassen
kein Problempasst soweit einzieges problem ist nun das er bei lagerbestand 0 nichts ausgibt ... sprich in spalte 2 "lagerbestand"
müsste er im besten fall wenn dort nur 0 vorkommt eine null stehen lassen
$_.Lagerbestand = ($_.Lagerbestand -replace '^0*$','0') -replace '^0{2,}',''
-edit- angepasst für den Fall das es in der Spalte so aussieht '00000'