matsche112

Powershell-Script .CSV runterladen-bearbeiten-hochladen (Lieferantenbestand)

Hallo zusammen,

ich bin ein Blutiger Anfänger und möchte folgendes realisieren.

Ich möchte mit einem Powershell-Script:

1. Eine .csv Datei mit Lieferantenbeständen herunterladen. (erste Spalte enthält Artikelnummer und die 2. Spalte Lieferverfügbarkeit mit dem Wert 1 für Lieferbar oder nicht Lieferbar mit dem Wert 0.)
2. ich möchte jetzt die .csv bearbeiten und die Bestände mit dem Wert 1 also Lieferbar mit einer bestimmter Zahl X ersetzen.
3.Danach die Datei speichern und in unsere Warenwirtschaft wieder hochladen.


Bis jetzt habe ich das mit einer Batch Datei gemacht die ihr hier sehen könnt.

Also automatisch jeden Tag die .csv runtergeladen und die aktuelle .csv wieder in die Wawi hochgeladen.
Macht wenig sinn da jeder Artikel wo Lieferbar ist nur als 1 Stück eingebucht wird. Weil der Lieferant nur 1 als Lieferbar und 0 als nicht Lieferbar vorgibt.
Vielleicht kann mir jemand von Euch behilflich sein um das ganze umzusetzen.

REM ###

cd \jtl\rcdome\curl
curl -o ..\rcdome\rcdome.csv https://www.xxxx.de/feed/stock_availability.csv -k
cd..                  

echo off

"C:\Program Files (x86)\JTL-Software\JTL-wawi-ameise.exe" --server=.\JTLWAWI --database=eazybusiness --dbuser=xxxxxx --dbpass=xxxxx --templateid=IMP96 --inputfile=c:\jtl\rcdome\rcdome.csv  



del c:\jtl\rcdome\rcdome.csv


exit

Im Voraus schon mal besten Dank an alle.

Mit freundlichen Grüßen
Matthias
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 2302928315

Url: https://administrator.de/forum/powershell-script-csv-runterladen-bearbeiten-hochladen-lieferantenbestand-2302928315.html

Ausgedruckt am: 08.07.2025 um 01:07 Uhr

1915348599
Lösung 1915348599 27.03.2022 aktualisiert um 23:06:40 Uhr
$file="c:\jtl\rcdome\rcdome.csv"  
$x = 100
iwr "https://www.xxxx.de/feed/stock_availability.csv" -outfile $file  
$csv = Import-Csv $file -Delimiter ";"  
$csv | %{
    if ($_.Lieferverfügbarkeit -eq 1){
        $_.Lieferverfügbarkeit = $x
    }
}
$csv | export-csv $file -delimiter ";" -NoType  -Encoding UTF8  
start "C:\Program Files (x86)\JTL-Software\JTL-wawi-ameise.exe" -Argumentlist "--server=.\JTLWAWI --database=eazybusiness --dbuser=xxxxxx --dbpass=xxxxx --templateid=IMP96 --inputfile=$file" -wait  
matsche112
matsche112 28.03.2022 um 21:17:48 Uhr
Hallo Pretty,

wow so schnell , vielen herzlichen Dank.

Ich werde es in den nächsten paar Tagen ausprobieren und dir eine Rückmeldung geben.

Vielen Dank

Matthias
matsche112
matsche112 28.03.2022 um 22:35:14 Uhr
So Hallo nochmal,

habe es jetzt probiert aber es funktioniert noch nicht so richtig.
Es wird ein Ordner rcdome.csv erstellt dieser ist aber leer und ich bekomme folgende Meldung:

iwr : Die zugrunde liegende Verbindung wurde geschlossen: Unerwarteter Fehler beim Senden..
In Zeile:3 Zeichen:1
back-to-topiwr "https://www.rc-dome.de/feed/stock_availability.csv" -outfile $fi ...
back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Import-Csv : Die Datei "C:\jtl\rcdome\rcdome.csv" konnte nicht gefunden werden.
In Zeile:4 Zeichen:8
back-to-top$csv = Import-Csv $file -Delimiter ";"
back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (face-smile [Import-Csv], FileNotFoundException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ImportCsvCommand

Export-Csv : Das Argument kann nicht an den Parameter "InputObject" gebunden werden, da es NULL ist.
In Zeile:10 Zeichen:8
back-to-top$csv | export-csv $file -delimiter ";" -NoType -Encoding UTF8
back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (face-smile [Export-Csv], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ExportCsvCommand
1915348599
1915348599 29.03.2022 aktualisiert um 08:00:33 Uhr
Die zugrunde liegende Verbindung wurde geschlossen: Unerwarteter Fehler beim Senden
Du verwendest entweder ein veraltetes OS /PowerShell Version oder der Server verwendet eine veraltetes TLS/SSL Protokoll. Oder das verwendete Website-Zertifikat ist nicht gültig oder wird nicht vertraut.
Also entweder updaten, Zertifikat aktualisieren und ggf. TLS Version um Skriptkopf explizit festlegen
[System.Net.ServicePointManager]::SecurityProtocol = 'Tls11,Tls12'  
matsche112
matsche112 29.03.2022 um 22:23:10 Uhr
Hallo Pretty,

hab jetzt ein Update von PowerShell auf die Version 7.2 gemacht und es funktioniert Super.
Vielen Dank nochmal. Du bist der Beste.
Was ich noch gesehen hab, die Lieferanten Datei enthält nicht nur 1 sondern auch eine 3 als Stückzahl, kann ich die 3 auch im gleichem Zug auf eine andere Zahl ändern?
Und eine Frage noch.
Kann ich die gespeicherte CSV Datei ($file="c:\jtl\rcdome\rcdome.csv") nachdem alles erledigt ist wieder löschen?
Sonst habe ich jeden Tag nach dem hochladen Datenmüll in dem Ordner.

Danke und Grüße

Matthias
matsche112
matsche112 29.03.2022 um 22:31:58 Uhr
Ich habe es gerade gefunden müsste mit Remove-Item c:\jtl\rcdome\rcdome.csv funktionieren.
148523
148523 29.03.2022 aktualisiert um 22:50:29 Uhr
Wenn du dir dann noch die Anwendung von Code Tags auch in Antworten angewöhnen könntest:
Formatierungen in den Beiträgen
würdest du allen hier helfen dein Layout Chaos von oben auch besser lesen zu können ! face-wink
matsche112
matsche112 31.03.2022 um 21:11:26 Uhr
Zitat von @148523:

Wenn du dir dann noch die Anwendung von Code Tags auch in Antworten angewöhnen könntest:
Formatierungen in den Beiträgen
würdest du allen hier helfen dein Layout Chaos von oben auch besser lesen zu können ! face-wink

Hallo LeReseau,

ja allerdings, sieht ziemlich bescheiden aus.
Ich gelobe Besserung. face-smile

Grüße
Matthias
matsche112
matsche112 04.04.2022 um 19:53:02 Uhr
Hallo zusammen,

ich habe noch 2 Fragen zu dem Skript von Pretty.

Wenn ich nicht nur die Zahl 1 ändern möchte sonder noch gleichzeitig eine andere, weil er Artikel mit Bestand von 3 hat, wie stelle ich das an ?

Und die 2. Frage:

Ein anderer Lieferant hat noch zusätzlich bei seinem Link eine Passwort und Benutzernamen abfrage.
Da komme ich auch noch nicht dahinter.

Zitat von @1915348599:

$file="c:\jtl\rcdome\rcdome.csv"  
$x = 100
iwr "https://www.xxxx.de/feed/stock_availability.csv" -outfile $file  
$csv = Import-Csv $file -Delimiter ";"  
$csv | %{
    if ($_.Lieferverfügbarkeit -eq 1){
        $_.Lieferverfügbarkeit = $x
    }
}
$csv | export-csv $file -delimiter ";" -NoType  -Encoding UTF8  
start "C:\Program Files (x86)\JTL-Software\JTL-wawi-ameise.exe" -Argumentlist "--server=.\JTLWAWI --database=eazybusiness --dbuser=xxxxxx --dbpass=xxxxx --templateid=IMP96 --inputfile=$file" -wait  

Vielen Dank schon mal für Eure Hilfe.

Grüße
Matthias