FTP.exe
-
Ich bin im momment dabei eine FTP Console zu coden und bin gleich am Anfang auf ein problem gestoßen.
system("ftp");
Danach kann ich nicht mit system("echo open domain") oder printf befehle für FTP übergeben. Und -s:FILE (Scriptdatei) möchte ich nicht benutzen.
-
Über die Konsole ist die schlechteste Lösung überhaupt. Nimm am Besten eine Bibliothek.
-
Meinst du für den Anwender? Denn ich starte das Programm aus einer Form. Kann man das nicht trozdem so machen?
Edit: Oder kann man Variabeln in die Scriptdatei schreiben. Denn es wird dort mit einer Datei die per Parameter angegeben was gemacht.
-
Ich schreib einfach nen Code der mir immer ne neue Textdatei erstellt.
-
Lennard Kröger schrieb:
Meinst du für den Anwender? Denn ich starte das Programm aus einer Form. Kann man das nicht trozdem so machen?
Nein, für die programmiertechnische Lösung. Per "system( )" ist immer schlecht, weil:
1. Windowsspezifisch und somit Platforumabhängig
2. undynamisch und schon fast kryptisch
3. es schönere Lösungen gibt (:
-
Kóyaánasqatsi schrieb:
Lennard Kröger schrieb:
Meinst du für den Anwender? Denn ich starte das Programm aus einer Form. Kann man das nicht trozdem so machen?
Nein, für die programmiertechnische Lösung. Per "system( )" ist immer schlecht, weil:
1. Windowsspezifisch und somit Platforumabhängig
2. undynamisch und schon fast kryptisch
3. es schönere Lösungen gibt (:system()
gehört zum Standard, aber die Befehle und Rückgabewerte sind natürlich Plattformabhängig. Dem Rest stimme ich hinzu.
-
Windowsspezifisch bezog sich wohl eher auf die Befehle die ftp.exe versteht.
-
Hier hab ich mal schon vor längerem geschrieben. Die eckigen Klammer müssen natürlich weg.
#include <fstream> using namespace std; void build() { std::ofstream build ("c:\\build.ftp"); build << "[HIER_DEIN_SERVER]" << std::endl; build << "USER [HIER_DEIN_BENUTZERNAME]" << std::endl; build << "[HIER_DEIN_PASSWORT]" << std::endl; build.close(); } int main() { build(); system ("ftp.exe -n -i -s:c:\\build.ftp"); system ("del c:\\*.ftp"); return 0; }
Hoffe es hat geholfen
-
Auf Windows hast du keinen Grund, system() zu verwenden.
Du hast CreateProcess, und das ist gut so.
-
Dies ist das Forum "DOS und Win32-Konsole", ob die Themen wohl OS-abhänging sind?
-
ich schrieb:
Du hast CreateProcess, und das ist gut so.
Und damit kannst du dir eigentlich die tempöräre Datei sparen, weil du die Befehle dem Prozess auf der Standard-Eingabe schicken kannst.
Btw wäre
%temp%
ein besserer Ort für solche Datein alsc:\
.
-
µngbd schrieb:
Auf Windows hast du keinen Grund, system() zu verwenden.
Du hast CreateProcess, und das ist gut so.Und inwiefern war CreateProcess nochmals plattformunabhängiger als system()?
So wie sich das für mich anhört benutzt du, Lennard, sowieso schon eine windowsspezifische Bibliothek für die grafische Oberfläche, daher spricht nichts dagegen ftp.exe aufzurufen, allerdings musst du das anders machen, du musst den Prozess öffnen und seine Standard-Ein/-Ausgabe umlenken, so dass du diese schreiben und lesen kannst. Unter UNIX geht sowas mit popen, unter Windows schaust du mal hier. Es gibt dort keine fertige Funktion, aber die Funktionalität ist auf jeden Fall vorhanden
-
Und jeztt schrieb:
µngbd schrieb:
Auf Windows hast du keinen Grund, system() zu verwenden.
Du hast CreateProcess, und das ist gut so.Und inwiefern war CreateProcess nochmals plattformunabhängiger als system()?
So wie sich das für mich anhört benutzt du, Lennard, sowieso schon eine windowsspezifische Bibliothek für die grafische Oberfläche, daher spricht nichts dagegen ftp.exe aufzurufen, allerdings musst du das anders machen, du musst den Prozess öffnen und seine Standard-Ein/-Ausgabe umlenken, so dass du diese schreiben und lesen kannst. Unter UNIX geht sowas mit popen, unter Windows schaust du mal hier. Es gibt dort keine fertige Funktion, aber die Funktionalität ist auf jeden Fall vorhanden
Wir befinden uns im DOS und Win32-Konsole Forum. Hier ist rein gar nicht plattformunabhängig!!!
-
unter Windows schaust du mal hier.
Der Einfachheit halber würde ich lieber hierhin verweisen.
-
Übrigens beherrscht die WinAPI FTP auch direkt: http://msdn.microsoft.com/en-us/library/aa384180(VS.85).aspx