Hallo,
kurzfassung meines Problems:
Ich habe 2 Dateien die über FTP verschickt werden sollen. Wenn die erste Datei nicht geschickt wurde, soll er die zweite Datei auch nicht schicken.
lösungsansatz
Man kann die FTP.exe über Befehle einer externen Datei steuern (diese lässt sich ja mit c anlegen). Da habe ich mir gedacht, dass ich eine Datei anlege die folgendes enthält:
------------------------------------------------------------------------------------------------------------
open
Ftp ip
Username
Password
ascii
cd
Verzeichnis
lcd
locals verzeichnis
put
quelname zielname
quit
------------------------------------------------------------------------------------------------------------
und diese hier gespeichert c:\Test\anweisung.ftp
Die
kursiv geschriebnen sachen habe ich natürlich durch die richtigen werte ersetzt
Wenn man nun die ftp.exe wiefolgt ausführt, arbeitet die sie schritt für schritt die anweisungen der datei ab.
ftp.exe -s:c:\Test\anweisung.ftp
Das läuft auch soweit.
Das ganze kann man dann auch mit der anderen datei machen.
Warum das so nicht geht...
Ich muss ja irgendwie prüfen ob die Datei wirklich übertragen wurde. Man kann die ftp.exe auch so starten:
ftp -i -v -s:c:\Test\anweisung.ftp >NUL 2> ftpstat.txt // <- habe ich so gefunden
^ ^
unterdrückt die Ausgabe speicherts irgendwie in die ftpstat
So denk ichs mir, aber genau kann ichs nicht versprechen das die erklärung stimmt.
So wird die Bildschirmausgebe unterdrückt und die Fehlermeldungen sollten in die ftpstat.txt geschrieben werden.
Folgender fall:
Der ftp server ist down oder antwortet nicht.
In dem Fall steht dann in der ftpstat.txt
Verbindung zum Remotehost fehlgeschlagen.
oder so ähnlich.
Aber ist die datei einfach nur schreibgeschützt, schreibt die ftp.exe
keine fehlermeldung.
Jetzt seid ihr gefragt
Habt ihr eine lösungsidee wie ich testen kann ob die erste file übertragen wurde? oder wie ich mit rückgabewerten der FTP.exe arbeiten kann? Oder bietet die MSDN Libray was passendes (ich hab nix gefunden bzw versteh die art wie man dort sucht nicht ganz *duck*
)
Sorry für den dicken post, ich dachte mir ich machs lieber ausführlich, und danke jedem der sich das ganze durchließt
mfg d0x