mir der cmd arbeiten?!?



  • ich wollt nen kleines programm nur aus test zwecken schreiben , das in der console netstat -a eingibt und dann die ausgabe in eine textdatei speichert aber ich weiß nicht wie ich das in der cmd machen soll



  • netstat -a > ergebnis.txt



  • Sorry, war wohl ein wenig knapp. Man kann unter Windows z.B. mit DevC++ ein Konsolenprogramm schreiben, das mit system() Kommandos an das Betriebssystem übergibt. Beispiel:

    system("netstat -a > ergebnis.txt");
    

    Unter Unix kann eine der verschiedenene exec()-Funktionen benutzt werden.
    Weder exec() noch system() sind C++-spezifisch.



  • dazu brauchste aber kein programm schreiben, ein batch-script reicht.

    mfg,
    julian



  • danke 🙂 , jaja ich weiß nötig ist das nicht , wollte es auch nur ma sehen wie das geht

    *edit*
    hab jetz ein programm geschrieben aber iergendwie klappt das nicht so wie ich will ?!

    #include <iostream>
    using namespace std;
    
    int main()
        {
        int auswahl;
        cout << "\t\n ----Netstats---- " 
             << "\t\n starten <1>      "
             << "\t\n beenden <2>      "
             << endl;
         cin >> auswahl;
    
         switch(auswahl)
         {
         case 1 : system("netstat -a > ergebnis.txt");
                  break;
    
         }
         return 0;
         }
    


  • #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    void ShowNetstats( void );
    
    int main( void )
    {
        int Auswahl = 0;
    
    	cout << "\t\n -------- Netstats --------\n"
             << "\t\n Starten\t<1>      "
             << "\t\n Beenden\t<2>      "
             << endl;
    
    	cout << "\t\n Auswahl:\t";
    	cin >> Auswahl;
    
    	switch( Auswahl )
    	{
    		case 1 :
    			ShowNetstats();
    			break;
    	}
    
    	return 0;
    }
    
    void ShowNetstats( void )
    {
    	system("netstat -a > Temp.txt");
    
    	std::ifstream TempFile;
    	TempFile.open( "Temp.txt" );
    
    	std::string TempRow;
    
    	while( std::getline( TempFile, TempRow ) )  // Hier gabs irgendeinen MS-Bug wegen dem \n... Kann das nochmal wer erklären, ich glaube es wird ein Zeichen zu wenig ausgelesen...?
    		std::cout << TempRow << std::endl;		// Wenn ja, ist hier ein std::endl zuviel... Wie fixt man das am besten? :)
    
    	std::cout << "\n";
    
    	TempFile.close();
    
    	remove( "Temp.txt" );						// Temp.txt löschen, wird nicht mehr benötigt
    }
    

    🙄

    Edit: Sorry, dass ich Variablen und so umbenannt habe, aber ich mir hats so nicht gefallen 😃 Ist das eine Charakterschwäche? 🤡



  • ^^ ist der gleiche effekt wie bei mir.
    klappt auch nicht ausgabe in der temp.txt ist nähmlich

    -------- Netstats --------

    Starten <1>
    Beenden <2>

    Auswahl:

    danke für eure hilfe



  • c4pone schrieb:

    ^^ ist der gleiche effekt wie bei mir.
    klappt auch nicht ausgabe in der temp.txt ist nähmlich

    -------- Netstats --------

    Starten <1>
    Beenden <2>

    Auswahl:

    danke für eure hilfe

    Kann eigentlich nicht sein, zumindest bei mir klappt das perfekt unter Windows...





  • Bei mir klappt es unter WinXP auch prima. Vorsichtshalber habe ich den Fehlerstatus überprüft.

    #include<iostream>
    #include<fstream>
    using namespace std;
    
    int main() {
       int test = system("netstat -a > ergebnis.txt");
       if( test == 0 && errno == 0) {
          ifstream datei("ergebnis.txt", ios::in);
          if(!datei) 
             cout << "Datei kann nicht geöffnet werden!"<< endl;
          else {
             char ch;
             while(datei) {
                datei.get(ch);
                cout << ch;
             }
             cout << endl;
          }
       }
       else 
          cout << "Fehler! errno = " << errno << endl;
       system("pause");
    }
    

    Es gab kein Problem (übersetzt mit DevC++), der Inhalt der Datei, nämlich die Ausgabe von netstats, wird richtig angezeigt.



  • c4pone schrieb:

    EINS:
    http://img3.myimg.de/imageshack96e.jpg
    ZWEI:
    http://img3.myimg.de/imageshack2070.jpg
    DREI:
    http://img3.myimg.de/imageshack390b.jpg

    schauhs dir an ?!

    Welchen Compiler benutzt du? Schaut mir nach Dev-C++ aus. Probier erstmal folgendes: Start -> Ausführen -> cmd eingeben. Und dann dort netstat -a > ergebnis.txt eingeben. Sollte das richtig klappen, dann empfehle ich dir dringend einen anderen Compiler und IDE. Zum Beispiel: Visual Studio Express C++
    Gibts kostenlos von Microsoft! Ich habe den Quellcode mit der gleichen geschrieben eben nur der Standard Edition. Bei mir klappt alles perfekt...

    Viel Erfolg

    Gruß Patrick

    Edit: http://www.microsoft.com/germany/msdn/vstudio/products/express/download.mspx



  • ok jetz klappt auch endlich 🙂 danke für eure hilfe !



  • Naja ist ja logisch, wenn Du das Programm als "netstat.exe" kompilierst 😉



  • Rock Lobster schrieb:

    Naja ist ja logisch, wenn Du das Programm als "netstat.exe" kompilierst 😉

    Genial 👍 Aber er hat den Fehler ja jetzt scheinbar selber gefunden 😃

    Edit:

    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    void ShowNetstats( void );
    
    int main( void )
    {
        int Auswahl = 0;
    
        cout << "\t\n -------- Netstats --------\n"
             << "\t\n Starten\t<1>      "
             << "\t\n Beenden\t<2>      "
             << endl;
    
        cout << "\t\n Auswahl:\t";
        cin >> Auswahl;
    
        switch( Auswahl )
        {
            case 1 :
                ShowNetstats();
                break;
        }
    
        return 0;
    }
    
    void ShowNetstats( void )
    {
        system( "C:\WINDOWS\system32\netstat -a > Temp.txt" );
    
        std::ifstream TempFile;
        TempFile.open( "Temp.txt" );
    
        std::string TempRow;
    
        while( std::getline( TempFile, TempRow ) ) 
            std::cout << TempRow << std::endl; 
    
        std::cout << "\n";
    
        TempFile.close();
    
        remove( "Temp.txt" );  
    }
    

    So müsste es auch gehen, wenn dein Program auch netstat heißt 😉


Anmelden zum Antworten