
17346
01.02.2006, aktualisiert am 03.02.2006
Daten Download mit batch und wGET!?!?!?!
Hallo,
hab mich ne zeitlang damit beschäftigt aber irgendwie komm ich net weiter...brauch sozusagen dringen nen guten tipp..
Hier das Problem...
es geht um den datenabgleich zwischen Webshop und unsrem ERP-System...
das Exportieren der daten von ERP zu Webshop funktioniert ohne Problem ich Erstell die Daten vom ERP System und lade sie mittels rsync auf den webshop und aktivire dann per wget das skript auf dem webshop um die daten dann einzulesen...
nur der umgekehrte weg funktioniert nicht wirklich...
ich muss das skript auf dem webshop aktivieren...mit wget (was funktioniert)..
nur die daten von dem webshop zu holen bekomm ich nicht hin... problem ist, dass eine menge von daten darin stehen und ich eigentlich nur die brauche die mit imp anfangen...
hat jemand ne idee wie ich das am besten hinbekomme... die imp daten sind auch alle mit nem zeitstempel versehen so dass ich diese dann auch noch richtig sortieren muss... um dann beim einlesen ins erp-system nicht irgendwo anfange sondern bei der ältesten datei...
NEED HELP!?!?!?!
hab mich ne zeitlang damit beschäftigt aber irgendwie komm ich net weiter...brauch sozusagen dringen nen guten tipp..
Hier das Problem...
es geht um den datenabgleich zwischen Webshop und unsrem ERP-System...
das Exportieren der daten von ERP zu Webshop funktioniert ohne Problem ich Erstell die Daten vom ERP System und lade sie mittels rsync auf den webshop und aktivire dann per wget das skript auf dem webshop um die daten dann einzulesen...
nur der umgekehrte weg funktioniert nicht wirklich...
ich muss das skript auf dem webshop aktivieren...mit wget (was funktioniert)..
nur die daten von dem webshop zu holen bekomm ich nicht hin... problem ist, dass eine menge von daten darin stehen und ich eigentlich nur die brauche die mit imp anfangen...
hat jemand ne idee wie ich das am besten hinbekomme... die imp daten sind auch alle mit nem zeitstempel versehen so dass ich diese dann auch noch richtig sortieren muss... um dann beim einlesen ins erp-system nicht irgendwo anfange sondern bei der ältesten datei...
NEED HELP!?!?!?!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 24960
Url: https://administrator.de/forum/daten-download-mit-batch-und-wget-24960.html
Ausgedruckt am: 18.04.2025 um 05:04 Uhr
12 Kommentare
Neuester Kommentar
Hallo,
so wie ich das sehe, wirst Du das mit einer Batch allein nicht hinbekommen.
Arbeitest Du mit WGET unter Windows oder Linux?
Für das runterholen benötigst Du auf jeden Fall eine feste URL, wo die Daten abgeholt werden können.
Wenn du mit Denem Script alle Daten einsammeln kannst. könntest du ja auch über dieses Script z.B. ein VBS starten, das nur die relevanten Daten (imp..) aussortiert und diese danach auch noch sortiert.
Danach diese Daten speichert und Rückmeldung zum abholen gibt.
Das ist natürlich nur ein grober Umriss, sollte aber realisierbar sein.
http://www.pro-linux.de/berichte/wget-doku.html
Hier sind am Ende der Seite auch einige Erweiterungen von wget angezeigt, vielleich helfen einige oder eines davon weiter.
MfG maneich
so wie ich das sehe, wirst Du das mit einer Batch allein nicht hinbekommen.
Arbeitest Du mit WGET unter Windows oder Linux?
Für das runterholen benötigst Du auf jeden Fall eine feste URL, wo die Daten abgeholt werden können.
Wenn du mit Denem Script alle Daten einsammeln kannst. könntest du ja auch über dieses Script z.B. ein VBS starten, das nur die relevanten Daten (imp..) aussortiert und diese danach auch noch sortiert.
Danach diese Daten speichert und Rückmeldung zum abholen gibt.
Das ist natürlich nur ein grober Umriss, sollte aber realisierbar sein.
http://www.pro-linux.de/berichte/wget-doku.html
Hier sind am Ende der Seite auch einige Erweiterungen von wget angezeigt, vielleich helfen einige oder eines davon weiter.
MfG maneich
Hallo,
nun das ist doch schon mal etwas.
Also ich würde Dir vorschlagen das ganze runterzuladen und danach verarbeiten. Am einfachsten geht das dann mit VBS:
s2 = "URL" ' hier die genaue URL eintragen
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Call objHTTP.Open("GET", s2, FALSE)
objHTTP.Send
dat = Split(objHTTP.ResponseText, vbCrLf)
Damit hast Du in dat den Inhalt der Seite in Zeilen aufbereitet stehen und mit:
For Each da in dat
x = InStr(da, "imp")
If 0 < x Then
dat1 = dat1 & vbCrLf & da
End If
Next
Damit sortiest Du alle Datensätze aus die "imp" beinhalten.
Kommt "imp" nur am Zeilenanfang vor, kannst du das noch genauer machen mit:
x = InStr(left(da, 3), "imp")
Für das sortieren der Datensätze ist wichtig zu wissen ob Erstellungsdatum oder Datum letzte Änderung genommen werden soll.
Du solltest schon mal einige DatenSätze hier reinstellen, damit man sich einen Überblick verschaffen kann. Sortieren nach bestimmten Kriterien ist nicht so einfach.
MfG maneich
nun das ist doch schon mal etwas.
Also ich würde Dir vorschlagen das ganze runterzuladen und danach verarbeiten. Am einfachsten geht das dann mit VBS:
s2 = "URL" ' hier die genaue URL eintragen
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Call objHTTP.Open("GET", s2, FALSE)
objHTTP.Send
dat = Split(objHTTP.ResponseText, vbCrLf)
Damit hast Du in dat den Inhalt der Seite in Zeilen aufbereitet stehen und mit:
For Each da in dat
x = InStr(da, "imp")
If 0 < x Then
dat1 = dat1 & vbCrLf & da
End If
Next
Damit sortiest Du alle Datensätze aus die "imp" beinhalten.
Kommt "imp" nur am Zeilenanfang vor, kannst du das noch genauer machen mit:
x = InStr(left(da, 3), "imp")
Für das sortieren der Datensätze ist wichtig zu wissen ob Erstellungsdatum oder Datum letzte Änderung genommen werden soll.
Du solltest schon mal einige DatenSätze hier reinstellen, damit man sich einen Überblick verschaffen kann. Sortieren nach bestimmten Kriterien ist nicht so einfach.
MfG maneich
Hallo,
damit sollte es klappen.
Über Laufwerk/Netzlaufwerk alter & neuer Standort kann ich Dir ohne Aussagen so nicht helfen.
Die Liste (Listname muß in der Klammer angegeben werden) am besten im Verzeichnis der Ursprungsdateien ablegen und auch das Script in diesem Verzeichnis laufen lassen.
@echo off
cls
for /f "tokens=1,2,3,4 delims=_" %%i in (liste.txt) do call:loop %%i %%j %%k %%l
:loop
set y=%1
If not %y:~1,3%==imp goto end
set y=%4
set nam=%1_%2_%3_%y:~7%
move /y %1_%2_%3_%4 neuerStandort\%nam%>nul
:end
goto eof
MfG maneich
damit sollte es klappen.
Über Laufwerk/Netzlaufwerk alter & neuer Standort kann ich Dir ohne Aussagen so nicht helfen.
Die Liste (Listname muß in der Klammer angegeben werden) am besten im Verzeichnis der Ursprungsdateien ablegen und auch das Script in diesem Verzeichnis laufen lassen.
@echo off
cls
for /f "tokens=1,2,3,4 delims=_" %%i in (liste.txt) do call:loop %%i %%j %%k %%l
:loop
set y=%1
If not %y:~1,3%==imp goto end
set y=%4
set nam=%1_%2_%3_%y:~7%
move /y %1_%2_%3_%4 neuerStandort\%nam%>nul
:end
goto eof
MfG maneich
Na, maneich,
ich glaube eher, dass die Anforderung so zu interpretieren ist, dass die Dateien (imp_best_pos%timestamp%.csv und imp_best_kunden_%timestamp%.csv)
- erst alle mit wget zu holen sind
- diese dann einzeln (älteste zuerst) umbenannt werden müssen in imp_best_pos.csv und imp_best_kunden.csv
- einzeln per "LiesmirEin.exe imp_best_kunden.csv" bzw. "LiesmirEin.exe imp_best_post.csv" eingelesen werden sollen.
- danach vielleicht irgendwohin geMOVED werden.
Wir sollten erst noch mal die Spezifikation abwarten.
Gruß biber
P.S. Bei Deinem Batch fehlt ein "goto :eof" nach der FOR..IN.DO_Anweisung.
ich glaube eher, dass die Anforderung so zu interpretieren ist, dass die Dateien (imp_best_pos%timestamp%.csv und imp_best_kunden_%timestamp%.csv)
- erst alle mit wget zu holen sind
- diese dann einzeln (älteste zuerst) umbenannt werden müssen in imp_best_pos.csv und imp_best_kunden.csv
- einzeln per "LiesmirEin.exe imp_best_kunden.csv" bzw. "LiesmirEin.exe imp_best_post.csv" eingelesen werden sollen.
- danach vielleicht irgendwohin geMOVED werden.
Wir sollten erst noch mal die Spezifikation abwarten.
Gruß biber
P.S. Bei Deinem Batch fehlt ein "goto :eof" nach der FOR..IN.DO_Anweisung.
Hallo Biber,
wenn Du hier meinen ersten Thread gelesen hast, solltest Du eigentlich mitbekommen haben, daß ich auch der Meinung war/bin erst mal alles runterzuholen.
Eine Antwort kann nur so gut sein wie die Anfrage und mit Glauben kann man nicht programmieren.
Na ja, dann wird eben delims noch um den Punkt erweitert "delims=_. " und "token=1,2,3,4,5" und es wird noch %%m an loop übergeben und %4 wird in loop wird ignoriert.
Das mit dem "LiesmirEin.exe" verstehe ich nicht. Windows und ganz besonders ab W2K ist so mächtig, daß man fast keine Fremdtools benötigt. Man muß sich eben damit befassen.
Das goto eof sollte so auch klappen, wenn mindestens 1 Leerzeile dazwischen liegt. Aber sicher hast Du recht, daß es unter der for-Zeile besser aufgehoben ist
MfG maneich
wenn Du hier meinen ersten Thread gelesen hast, solltest Du eigentlich mitbekommen haben, daß ich auch der Meinung war/bin erst mal alles runterzuholen.
Eine Antwort kann nur so gut sein wie die Anfrage und mit Glauben kann man nicht programmieren.
Na ja, dann wird eben delims noch um den Punkt erweitert "delims=_. " und "token=1,2,3,4,5" und es wird noch %%m an loop übergeben und %4 wird in loop wird ignoriert.
Das mit dem "LiesmirEin.exe" verstehe ich nicht. Windows und ganz besonders ab W2K ist so mächtig, daß man fast keine Fremdtools benötigt. Man muß sich eben damit befassen.
Das goto eof sollte so auch klappen, wenn mindestens 1 Leerzeile dazwischen liegt. Aber sicher hast Du recht, daß es unter der for-Zeile besser aufgehoben ist
MfG maneich
Hallo,
dann mußt Du den Code eben, wie in meinem lezten Thread erwähnt, etwas erweitern
Wenn Du bei delims=_. noch den Punkt dazu setzst, lierfert Dir die for-Zeile z.B.
imp best pos 20060105121314 csv
also 5 Positionen, wo ist dann auch tokens=1,2,3,4,5.
Alle Positionen benötigst Du für die ursprüngliche Datei und für den neuen Namen Pos. 1,2,3,5
Also:
@echo off
cls
for /f "tokens=1,2,3,4,5 delims=_." %%i in (liste.txt) do call:loop %%i %%j %%k %%l %%m
goto eof
:loop
set y=%1
If not %y:~1,3%==imp goto end
move /y %1_%2_%3_%4.%5 neuerStandort\%1_%2_%3.%5>nul
oder für rename
ren %1_%2_%3_%4.%5 %1_%2_%3.%5>nul
:end
Wenn Du in der Liste bereits nur die Dateien mit "imp" stehen hast, genügt nur die for-Zeile
for /f "tokens=1,2,3,4,5 delims=_." %%i in (liste.txt) do move /y Verzeichnis\%%i_%%j_%%k_%%l.%%m Verzeichnis\%%i_%%j_%%k.%%m>nul
für move oder bei rename
for /f "tokens=1,2,3,4,5 delims=_." %%i in (liste.txt) do ren Verzeichnis\%%i_%%j_%%k_%%l.%%m %%i_%%j_%%k.%%m>nul
MfG maneich
dann mußt Du den Code eben, wie in meinem lezten Thread erwähnt, etwas erweitern
Wenn Du bei delims=_. noch den Punkt dazu setzst, lierfert Dir die for-Zeile z.B.
imp best pos 20060105121314 csv
also 5 Positionen, wo ist dann auch tokens=1,2,3,4,5.
Alle Positionen benötigst Du für die ursprüngliche Datei und für den neuen Namen Pos. 1,2,3,5
Also:
@echo off
cls
for /f "tokens=1,2,3,4,5 delims=_." %%i in (liste.txt) do call:loop %%i %%j %%k %%l %%m
goto eof
:loop
set y=%1
If not %y:~1,3%==imp goto end
move /y %1_%2_%3_%4.%5 neuerStandort\%1_%2_%3.%5>nul
oder für rename
ren %1_%2_%3_%4.%5 %1_%2_%3.%5>nul
:end
Wenn Du in der Liste bereits nur die Dateien mit "imp" stehen hast, genügt nur die for-Zeile
for /f "tokens=1,2,3,4,5 delims=_." %%i in (liste.txt) do move /y Verzeichnis\%%i_%%j_%%k_%%l.%%m Verzeichnis\%%i_%%j_%%k.%%m>nul
für move oder bei rename
for /f "tokens=1,2,3,4,5 delims=_." %%i in (liste.txt) do ren Verzeichnis\%%i_%%j_%%k_%%l.%%m %%i_%%j_%%k.%%m>nul
MfG maneich
Moin Martin,
das wird langsam ein bisschen schwierig, weil Kollege maneich und ich Deine Anforderung vollkommen unterschiedlich verstehen und dementsprechend vollkommen unterschiedliche Lösungswege vor Augen haben.
Deshalb noch mal von mir die Frage:
Ich habe es so verstanden, dass die imp_best_kunden*bla- und imp_best_best_pos_bla-Dateien einzeln eingelesen werden müssen von irgendeinem Tool "LiesMirEin.exe", das das zwar kann, aber immer den feststehenden Namen "imp_best_kunden.* OHNE die Timestamp-Extension braucht.
Wenn dem so ist, komme ich mit ein paar Zeilen weniger aus als maneich - bin aber nicht sicher, wie genau denn Deine Anforderung ist.
Mit Weg wäre :
::--BatchskizzeBiber.bat
@echo off
Wget.....(alle imp_best*.csv ins Verzeichnis D:\ownload)
for /f %%i in ('dir /od /b D:\ownload\imp_best_pos*.csv') do call:loop IMP_BEST_POS.csv %%~dpni
for /f %%i in ('dir /od /b D:\ownload\imp_best_kunden*.csv') do call:loop IMP_BEST_KUNDEN.csv %%~dpni
goto :eof
:loop
Copy /y %2 c:\wodasEinlesenIst\%1
c:\wodasEinlesenIst\LiesMirEin %1
Move %2 S:\SaveDisk\MyImpBackups\*.*
goto :eof
::--BatchskizzeBiber.bat
Die Pfade und den Namen von der "LiesmirEin.exe" solltest Du natürlich ersetzen.
So habe ich die Mimik verstanden.
Gruß Biber
das wird langsam ein bisschen schwierig, weil Kollege maneich und ich Deine Anforderung vollkommen unterschiedlich verstehen und dementsprechend vollkommen unterschiedliche Lösungswege vor Augen haben.
Deshalb noch mal von mir die Frage:
Ich habe es so verstanden, dass die imp_best_kunden*bla- und imp_best_best_pos_bla-Dateien einzeln eingelesen werden müssen von irgendeinem Tool "LiesMirEin.exe", das das zwar kann, aber immer den feststehenden Namen "imp_best_kunden.* OHNE die Timestamp-Extension braucht.
Wenn dem so ist, komme ich mit ein paar Zeilen weniger aus als maneich - bin aber nicht sicher, wie genau denn Deine Anforderung ist.
Mit Weg wäre :
::--BatchskizzeBiber.bat
@echo off
Wget.....(alle imp_best*.csv ins Verzeichnis D:\ownload)
for /f %%i in ('dir /od /b D:\ownload\imp_best_pos*.csv') do call:loop IMP_BEST_POS.csv %%~dpni
for /f %%i in ('dir /od /b D:\ownload\imp_best_kunden*.csv') do call:loop IMP_BEST_KUNDEN.csv %%~dpni
goto :eof
:loop
Copy /y %2 c:\wodasEinlesenIst\%1
c:\wodasEinlesenIst\LiesMirEin %1
Move %2 S:\SaveDisk\MyImpBackups\*.*
goto :eof
::--BatchskizzeBiber.bat
Die Pfade und den Namen von der "LiesmirEin.exe" solltest Du natürlich ersetzen.
So habe ich die Mimik verstanden.
Gruß Biber
Hallo,
ich erinnere an Deinen Thread vom 2.2.06:
ich glaube ich hab mich da vielleicht etwas falsch ausgedrückt...
die datensätze ansicht sind kein problem es geht um die dateinamen....
sprich wird es eine liste von dateien geben die ungefähr so ausschaut..
------
imp_best_pos_20060105121314.csv --> davon mehr als eine...
&
import_best_kunden_20060105121314.csv
Also ging ich davon aus, daß alle Dateien in einer Liste stehen, die Du dann abarbeiten willst. Ist dem nicht so mußt du natürlich mit "dir" arbeiten, wie von Biber angezeigt.
Das Problem ist eben, daß bei Deinen Ausführungen div. Interpretationen möglich sind.
Na ja mal sehen.
MfG maneich
ich erinnere an Deinen Thread vom 2.2.06:
ich glaube ich hab mich da vielleicht etwas falsch ausgedrückt...
die datensätze ansicht sind kein problem es geht um die dateinamen....
sprich wird es eine liste von dateien geben die ungefähr so ausschaut..
------
imp_best_pos_20060105121314.csv --> davon mehr als eine...
&
import_best_kunden_20060105121314.csv
Also ging ich davon aus, daß alle Dateien in einer Liste stehen, die Du dann abarbeiten willst. Ist dem nicht so mußt du natürlich mit "dir" arbeiten, wie von Biber angezeigt.
Das Problem ist eben, daß bei Deinen Ausführungen div. Interpretationen möglich sind.
Na ja mal sehen.
MfG maneich