matsche112
Goto Top

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

Content-Key: 2302928315

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

Printed on: June 22, 2024 at 10:06 o'clock

Mitglied: 1915348599
Solution 1915348599 Mar 27, 2022 updated at 21:06:40 (UTC)
Goto Top
$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  
Member: matsche112
matsche112 Mar 28, 2022 at 19:17:48 (UTC)
Goto Top
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
Member: matsche112
matsche112 Mar 28, 2022 at 20:35:14 (UTC)
Goto Top
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
Mitglied: 1915348599
1915348599 Mar 29, 2022 updated at 06:00:33 (UTC)
Goto Top
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'  
Member: matsche112
matsche112 Mar 29, 2022 at 20:23:10 (UTC)
Goto Top
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
Member: matsche112
matsche112 Mar 29, 2022 at 20:31:58 (UTC)
Goto Top
Ich habe es gerade gefunden müsste mit Remove-Item c:\jtl\rcdome\rcdome.csv funktionieren.
Mitglied: 148523
148523 Mar 29, 2022 updated at 20:50:29 (UTC)
Goto Top
Wenn du dir dann noch die Anwendung von Code Tags auch in Antworten angewöhnen könntest:
Formatting instructions in the posts
würdest du allen hier helfen dein Layout Chaos von oben auch besser lesen zu können ! face-wink
Member: matsche112
matsche112 Mar 31, 2022 at 19:11:26 (UTC)
Goto Top
Zitat von @148523:

Wenn du dir dann noch die Anwendung von Code Tags auch in Antworten angewöhnen könntest:
Formatting instructions in the posts
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
Member: matsche112
matsche112 Apr 04, 2022 at 17:53:02 (UTC)
Goto Top
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