mir der cmd arbeiten?!?
-
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...
-
EINS:
http://img3.myimg.de/imageshack96e.jpg
ZWEI:
http://img3.myimg.de/imageshack2070.jpg
DREI:
http://img3.myimg.de/imageshack390b.jpgschauhs dir an ?!
-
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.jpgschauhs 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
