barbrady
Goto Top

Dateien auf FTP-Server zählen und gezielt herunterladen

Guten Morgen,

ich wurde in unserer Firma leider Gottes mit der Erstellung einer Batch-Datei beauftragt.
Gottlob bin ich diesbezüglich aber sehr, sehr wenig bewandert.... face-sad

Die Batch-Datei soll:

- auf einen FTP Server zugreifen
- prüfen welche Dateien in dem bestimmten Ordner vorhanden sind
- diese Dateien in eine Textdatei schreiben
- jede Datei einzeln heruntergeladen werden
- die heruntergeladenen Dateien mit denen in der Textdatei vergleich ob vollständig übertragen wurde
- melden falls alles geklappt hatt bzw. eine Fehlermeldung angeben welche Datei fehlerhaft oder gar nicht übertragen wurde


Ich habe mit meinen bescheidenen Batchkenntnissen und ein bisschen Hilfe aus dem Internet ein bisschen probiert, komme aber nicht sehr weit:


@echo on
ftp open [Servername]
[Username]
[Passwort]
cd [Verzeichnisname]

mls * C:\Temp\Inhalt2.txt

set file=C\temp\Inhalt2.txt
for /F "delims=" %%i in (%file%) do (

echo "ftp mget %%i" >> ftp_controlfile.ftp
ftp mget %%i
)

ftp C:\Temp\ftp_controlfile.ftp
dir >> ergebnis.txt
Vergleiche Inhalt2.txt mit ergebnis.txt

IF "Inhalt2.txt" == "Ergebnis.txt" goto Antr else goto Antf

:Antr
Echo Die Liste der Dateien vom FTP-Server und die der Uebertragenen ist identisch
goto Ende
:Antf
Echo ?????
goto Ende

:Ende
bye


Meine Probleme liegen darin, das ich nicht weiß wie ich die Dateien alle einzeln herunterladen und kontrollieren kann, welche Datei evtl. fehlerhaft übertragen wurde und wie ich diese "Fehlermeldung" ausgeben kann.


Danke im Voraus und einen schönen Tag noch,

Grüße Barbrady

Content-Key: 152363

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

Printed on: April 19, 2024 at 00:04 o'clock

Member: Snowman25
Snowman25 Oct 05, 2010 at 08:41:02 (UTC)
Goto Top
Zitat von @Barbrady:
Guten Morgen,

Guten Morgen @Barbrady,

ich wurde in unserer Firma leider Gottes mit der Erstellung einer Batch-Datei beauftragt.
Gottlob bin ich diesbezüglich aber sehr, sehr wenig bewandert.... face-sad

Warum machen die Leute soetwas? Wieso werden immer wieder Menschen mit einer Aufgabe beauftragt, mit deren Materie sie sich nicht auskennen? Ich werde es wohl nie verstehen...

Die Batch-Datei soll:

- auf einen FTP Server zugreifen
- prüfen welche Dateien in dem bestimmten Ordner vorhanden sind
- diese Dateien in eine Textdatei schreiben
- jede Datei einzeln heruntergeladen werden
- die heruntergeladenen Dateien mit denen in der Textdatei vergleich ob vollständig übertragen wurde
- melden falls alles geklappt hatt bzw. eine Fehlermeldung angeben welche Datei fehlerhaft oder gar nicht übertragen wurde

Dabei gibt es 1 großes Problem: Batch und FTP passen nicht gut zusammen und mögen sich nicht wirklich.
@echo on
ftp open [Servername]
[Username]
[Passwort]
cd [Verzeichnisname]

mls * C:\Temp\Inhalt2.txt

set file=C\temp\Inhalt2.txt
for /F "delims=" %%i in (%file%) do (  

echo "ftp mget %%i" >> ftp_controlfile.ftp  
ftp mget %%i
)

ftp C:\Temp\ftp_controlfile.ftp
dir >> ergebnis.txt
Vergleiche Inhalt2.txt mit ergebnis.txt

IF "Inhalt2.txt" == "Ergebnis.txt" goto Antr else goto Antf  

:Antr
Echo Die Liste der Dateien vom FTP-Server und die der Uebertragenen ist identisch
goto Ende
:Antf
Echo ?????
goto Ende

:Ende
bye

Das wird so nix. Du kannst
  1. keine FTP- und Batchbefehle mischen
  2. FTP nicht über Batch steuern
  3. werden deine beiden DIR-Ausgaben nie gleich sein.

Meine Probleme liegen darin, das ich nicht weiß wie ich die Dateien alle einzeln herunterladen und kontrollieren kann,
welche Datei evtl. fehlerhaft übertragen wurde und wie ich diese "Fehlermeldung" ausgeben kann.

Das macht der FTP dann sowieso automatisch, die Fehlerausgabe. Du musst viel eher darauf achten, dass du im richtigen Transfermodus bist (Binary / ASCII).
Einfach ein pause ans Ende stellen, sodass man Fehlermeldungen lesen kann.

Danke im Voraus und einen schönen Tag noch,

Sag deinem Auftraggeber lieber, dass das mit Batch nicht bzw. nur sehr schwer geht. Viele Programme mit FTP-Möglichkeit haben die Option, Verzeichnisse zu Synchronisieren. Diese achten auch auf den richtigen Transfertyp und laden fehlerhafte Dateien erneut. Kannst ja z.B. den Total Commander verwenden.

Grüße Barbrady

Gruß
Snow
Mitglied: 60730
60730 Oct 05, 2010 at 16:27:54 (UTC)
Goto Top
moin,

die Frage ist doch bedeutet Batch==Boardmittel oder darfst du freie 3rd Party Tools nehmen?

  • Wget sollte die eleganteste Lösung bieten.
  • sollte dir soviele Treffer liefern, dass sich das zerpflücken deiner einzelnen Zeilen nicht lohnt.

@snow: Grundsätzlich Jein face-wink Wer nix neues machen muß - lernt nix (und deshalb lass ich den Lernerfolg mal beim TO und kritzel nix für Frau Copy und Herrn Paste)
Dabei gibt es 1 großes Problem:
Nöö, die beiden passen schon zusammen...

Gruß
Member: Barbrady
Barbrady Oct 06, 2010 at 06:22:59 (UTC)
Goto Top
Guten Morgen,

Zitat von @Snowman25:
> Zitat von @Barbrady:

> ich wurde in unserer Firma leider Gottes mit der Erstellung einer Batch-Datei beauftragt.
> Gottlob bin ich diesbezüglich aber sehr, sehr wenig bewandert.... face-sad

Warum machen die Leute soetwas? Wieso werden immer wieder Menschen mit einer Aufgabe beauftragt, mit deren Materie sie sich nicht
auskennen? Ich werde es wohl nie verstehen...

Weil sie es toll finden kleine Mitarbeiter zu quälen ? Wer weiß ...

Aber wir kennen doch alle das Sprichwort:
Wessen Brot ich ess, dessen Lied ich sing ;)

Es soll unbedingt in Batch geschrieben werden (über Gründe etc. werde ich an dieser Stelle nicht reden)

Aber ich habe gestern schon ein paar Fortschritte gemacht, mal sehen ob ich es doch noch schaffe.
Bin im Moment dabei die letzten beiden Aufgaben der Batch zu "erdichten".

Mit freundlichen Grüßen

EDIT:

So, der FTP Teil der Batch hatt sich erledigt, ich habe es geschafft das die Batch die Dateien ausliest, die Dateinnamen in eine .txt speichert und danach die Dateien nacheinander runterläd...
Jetzt muss nur noch Abgeglichen und ausgegeben werden ob die Daten übereinstimmen...
Mitglied: 60730
60730 Oct 06, 2010 at 14:09:01 (UTC)
Goto Top
Moin,

Es soll unbedingt in Batch geschrieben werden
Wget ist ein Komadozeilenwerkzeug, das ganz harte auch so benutzen, weicheier wie ich aber innerhalb einer Batch.

Aber ich habe gestern schon ein paar Fortschritte gemacht, mal sehen ob ich es doch noch schaffe.
Bin im Moment dabei die letzten beiden Aufgaben der Batch zu "erdichten".

Du hättest nur auf den blauen Text klickern müssen, das Rad haben wir schon erfunden und verdichtet.