modernsolution
Goto Top

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

Content-Key: 262901

Url: https://administrator.de/contentid/262901

Printed on: April 22, 2024 at 23:04 o'clock

Mitglied: 114757
114757 Feb 10, 2015 at 08:37:16 (UTC)
Goto Top
Moin
Beispiel wie das mit Batch geht:
for /f "tokens=* delims=0" %%a in ("000000650321") DO @echo %%a
oder mit Powershell
"000000650321" -replace '^0*',''
Gruß jodel32
Member: modernsolution
modernsolution Feb 10, 2015 at 08:49:47 (UTC)
Goto Top
also meine Batch sieht derzeit so aus:

@echo off
cd\
C:
cd C:\Batch
wget ftp://xxxxxxxx/Lagerbestand/lagerbestand.csv --user="xxxxxxxx" --password="xxxxxxxx"
"C:\Program Files (x86)\JTL-Software\JTL-wawi-ameise.exe" --server=xxxxxxx --database=Mandant_9 --dbuser=xxxxxx --dbpass=xxxxxxx --templateid=IMP8 --inputfile=lagerbestand.csv
del lagerbestand.csv

Spalte A und B muss bearbeitet werden

Wie müsste die Batch dann im gesamten aussehen !?
Member: modernsolution
modernsolution Feb 10, 2015 at 08:51:41 (UTC)
Goto Top
und vorallem war die Artikelnummer nur ein beispiel ... es müssten alle Zeilen der Spalte verändert werden !
Mitglied: 114757
114757 Feb 10, 2015 updated at 09:26:57 (UTC)
Goto Top
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 face-wink, aber dir muss man es wieder vorbeten ...
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  
(Spalten- und Dateinamen anpassen !)
Member: modernsolution
modernsolution Feb 10, 2015 at 09:06:41 (UTC)
Goto Top
Entschuldige bitte bin in dem Bereich noch nicht so fit wie andere hier face-sad

Wie würde die Geschichte denn mit Powershell aussehen?

Ich muss das nicht umbedingt als Batch haben ;)

trennzeichen ist |

danke
Member: modernsolution
modernsolution Feb 10, 2015 at 09:07:58 (UTC)
Goto Top
und ja überschrift ist in der ersten zeile !
Mitglied: 114757
114757 Feb 10, 2015 updated at 09:10:08 (UTC)
Goto Top
Zitat von @modernsolution:
Wie würde die Geschichte denn mit Powershell aussehen?
Siehe oben... und nicht vergessen die Spaltennamen anzupassen...
Wenn die Spaltennamen Leerzeichen haben müssen sie in einfache Anführungszeichen eingeschlossen werden (')...
Member: modernsolution
modernsolution Feb 10, 2015 at 09:20:22 (UTC)
Goto Top
 
Import-CSV "C:\Batch\lagerbestand.csv" -Delimiter "|" | %{  
    $_.artikelnr = $_.artikelnr -replace '^0*',''  
    $_.lagerbestand = $_.lagerbestand -replace '^0*',''  
    $_.liefertermin = $_.liefertermin -replace '^0*',''  

} | export-csv "C:\Batch\lagerbestand_out.csv" -Delimiter "|" -NoTypeInformation  

habe ich was vergessen ? die out datei ist irgendwie leer ... zeigt aber auch keine fehler oder so an ?!
Mitglied: 114757
114757 Feb 10, 2015 updated at 09:31:38 (UTC)
Goto Top
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  
Member: modernsolution
modernsolution Feb 10, 2015 at 09:33:23 (UTC)
Goto Top
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 face-sad
Mitglied: 114757
114757 Feb 10, 2015 updated at 09:51:26 (UTC)
Goto Top
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 face-sad
kein Problem
$_.Lagerbestand = ($_.Lagerbestand -replace '^0*$','0') -replace '^0{2,}',''

-edit- angepasst für den Fall das es in der Spalte so aussieht '00000'