Eigentlich simpler system() aufruf klappt nicht.



  • ich versuche über die ftp funktion ein simplen ftp "client" zu coden. alles läuft perfekt bis auf dem wichtigsten teil nämlich das ausführen.

    #include <iostream>
    #include <windows.h>
    #include <stdlib.h>
    #include <string>
    #include <stdio.h>
    #include <conio.h>  //viele headers aus testzwecken nicht direkt schimpfen^^
    
    using namespace std;
    
    string abfrage;
    
    int main()
    {
        system("echo OPEN ftp.test.de>loeschen.txt");
        system("echo benutzer>>loeschen.txt");
        system("echo passwort>>loeschen.txt");
        system("cls");
        cout<<"--------------------FTP-Client--------------------\n\n\n\n";
        cout<<"loeschen, hochladen, herunterladen?\n";
        cin>>abfrage;
        if(abfrage=="loeschen")
        {
             string dirdel;
             string writedateidel= ">>loeschen.txt";
             string dateitypdel;
             string filedel;
             //Ordner
             cout<<"\n\nOrdner?\n";
             cin>>dirdel;
             dirdel=dirdel+writedateidel;
             system(("echo CD " + dirdel).c_str());
             cout<<"Dateityp:\n";
             cin>>dateitypdel;
             //Dateityp
                                     if(dateitypdel=="ASCII")
                                      {
                                      system("echo ASCII>>loeschen.txt");
                                      }
                                      else                               //ich weiß unsauber^^
                                      {
                                       system("echo binary>>loeschen.txt");
                                      }
             //datei
             cout<<"\nDatei?\n";
             cin>>filedel;
             filedel=filedel+writedateidel;
             system(("echo delete " + filedel).c_str());
             system("echo bye>>loeschen.txt");
             cout<<"Wird geloescht!";
             Sleep(500);        
             system("ftp -s:C:\\Beispiel\\loeschen.txt"); //Hier spinnt das programm... es "springt" wieder an den anfang und nix wird ausgeführt. Über cmd.exe funktioniert der befehl ganz normal (mit der loeschen.txt datei)
    
             Sleep(10000);                  
        }
    }
    

    die funktionen hochladen und runterladen fehlen noch... bin ja nicht ganz fertig
    ich weiß selbst das es unsauber ist...
    Bitte um hilfe denn bin am verzweifeln->Danke im vorraus
    die txt datei sieht dann so aus:
    [text]
    OPEN ftp.test.de
    benutzer
    passwort
    CD test
    ASCII
    delete file.txt
    bye
    [/text]



  • Ok, bei der Zeile wo es "spinnt", würd ich folgendes schreiben:

    system("ftp.exe -n -i -s:c:HIER_DEINE_DATEI.txt");
    

    Wenn es immer noch nicht funktioniert:

    void build()
    {
    	ofstream build ("c:\\build.ftp");
    	build << "OPEN [DEIN_SERVER]" << endl; //Hier kommt dein Server rein, oder mit Variablen (strings)
    	build << "USER [USERNAME]" << endl; //Hier der Username, oder mit Variablen(strings)
    	build << "[PASSWORT]" << endl; //Hier das Passwort, oder mit Variablen (strings)
    	build.close();
    }
    
    int main()
    {
        build(); //Aufruf der build-funktion, wird benötigt um auf den server zuzugreifen wegen passwort, username und server
        system ("ftp.exe -n -i -s:c:\\build.ftp"); //hier wird deine Datei geladen und der Username, Passwort und Server zum connecten verwendet
        system ("del c:\\*.ftp"); //Löscht die Datei wieder
    
        return 0;
    }
    

    hab auch mal sowas Ahnliches geschrieben, aber nicht im dem Umfang wie du 🙂

    Probiers mal mit dem zweiten Lösungsansatz damit wird es klappen 😃 (bei mir zumindest)

    SDS



  • ich weiß nicht wieso aber das problem besteht weiterhin. Ich habe zum test vor

    system("ftp -s:C:\\build.txt"); //txt weil .ftp bei irgendwie nicht funktioniert (vista/getestet über cmd.exe)
    

    noch ein

    system("echo test");
    

    eingefügt.
    in der konsole wird test angezeigt danach allerdings fängt es wieder von vorne an 😞
    Ich bedanke mich trotzdem für deine hilfe 😉


Log in to reply