FTP download mit Bedingung
An alle Spezialisten:
folgendes Szenario:
FTP-Server (Linux-System) der Dateien in nach folgendem Muster bereitstellt:
Ziel ist es, diese Dateien auf einen Windows-Server zu verschieben und zwar erst dann, wenn die passende RDY zur CSV vorhanden ist.
Wenn also eine CSV ohne RDYim Verzeichnis liegt, soll diese nicht transferiert werden.
Leider ist es nicht möglich, auf dem Server Software eines Drittherstellers zu installieren, also müssen die Bordmittel von Windows herhalten.
Einen normalen FTP-Transfer via ftp.txt, die die Parameter hält und dem ftp Kommandozeilen Client von Windows herzustellen ist nicht das Problem.
Es hapert daran, den passenden Dateinamen aus der mit mdir erstellten Datei zu extrahieren, zu vergleichen ob eine passende csv vorhanden ist.
Als Anhaltspunkt eine Zeile aus der mdir :
Nach dem die Datei auf den Windows Server übertragen wurde, muss selbstverständlich auch geprüft werden, ob die ordnungsgemäß durchgeführt worden ist, bevor die Dateien (CSV bzw die entsprechende RDY) auf dem Linux-System gelöscht werden.
folgendes Szenario:
FTP-Server (Linux-System) der Dateien in nach folgendem Muster bereitstellt:
20130312143222_SQXgfa_4006559000009_39.rdy
20130312143222_SQXgfa_4006559000009_39.csv
Wenn also eine CSV ohne RDYim Verzeichnis liegt, soll diese nicht transferiert werden.
Leider ist es nicht möglich, auf dem Server Software eines Drittherstellers zu installieren, also müssen die Bordmittel von Windows herhalten.
Einen normalen FTP-Transfer via ftp.txt, die die Parameter hält und dem ftp Kommandozeilen Client von Windows herzustellen ist nicht das Problem.
Es hapert daran, den passenden Dateinamen aus der mit mdir erstellten Datei zu extrahieren, zu vergleichen ob eine passende csv vorhanden ist.
Als Anhaltspunkt eine Zeile aus der mdir :
1: -rw-rw---- 1 899 502 219 Mar 13 14:29 20130312143222_SQXgfa_4006559000009_39.rdy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 203292
Url: https://administrator.de/contentid/203292
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
3 Kommentare
Neuester Kommentar
Moin
Ist, sofern eine rdy-Datei vorhanden ist, auch immer eine csv-datei vorhanden?
Wenn ja, einfach die rdy-Dateien filtern, rdy durch csv erstzen und herunterladen. fertig.
Ansonsten:
Die Implementation als cmd- oder powershell-batch sei dem TO als Übungsaufgabe üebrlassen.
lks
PS: das ganz ließe sich mit bash/gnu-tools vermulich als Einzeiler hinschreiben. Wenn Du auf der Windows-Kiste cygwin o.ä. installieren darfst sollte sich die Lösung als trivial erweisen:
oder so ähnlich.
Ist, sofern eine rdy-Datei vorhanden ist, auch immer eine csv-datei vorhanden?
Wenn ja, einfach die rdy-Dateien filtern, rdy durch csv erstzen und herunterladen. fertig.
Ansonsten:
- Eine dateiliste mit den rdy-dateien erzeugen
- daraus die endungen in csv wandeln
- Diese liste als Lilter benutzen, um dann die csv-Dateien aus der ursprünglichen Liste herauszusuchen.
Die Implementation als cmd- oder powershell-batch sei dem TO als Übungsaufgabe üebrlassen.
lks
PS: das ganz ließe sich mit bash/gnu-tools vermulich als Einzeiler hinschreiben. Wenn Du auf der Windows-Kiste cygwin o.ä. installieren darfst sollte sich die Lösung als trivial erweisen:
wget -O - ftp://ftp-server/verzeichnis | grep -i ".rdy$" | sed -e "s:.rdy$:.csv:g" | xargs wget
oder so ähnlich.
Gehe ich richtig davon aus, dass auf dem Server eine CSV-Datei ohne eine RDY-Datein sein kann, aber nicht umgekehrt? Falls man sich darauf verlassen kann, dass zu jeder RDY-Datei auch eine entsprechende CSV-Datei existiert, kannst du folgendermaßen vorgehen:
Filtere die Ausgabe des Verzeichnisses mit Dann kannst du mit einer Schaue dir unter "
Um die Liste nicht auf der Festlatte zwischenspeichern zu müssen, kannst du in der obigen
Gruß
format-c
Filtere die Ausgabe des Verzeichnisses mit
... | findstr /e ".rdy"
for
-Schleife die Liste abarbeiten. for /f %%i in (liste.txt) do befehl %%i&befehl %%~ni.csv
for /?
" das letzte Drittel an.Um die Liste nicht auf der Festlatte zwischenspeichern zu müssen, kannst du in der obigen
for
-Schleife die liste.txt
durch 'befehl-zum-auflisten ^| find /e ".rdy"'
ersetzen.Gruß
format-c