Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

c++ und Dos-Befehl

Oli2002 / 3 Antworten / Baumansicht Nickles

Hi,


ich möchte mit C++ einen Dos-Befehl ausführen, an den noch Variablen
geknüpft sind.


Hier das Beispiel:


"C:\windows\system32\tracert.exe -w 500 www.google.de"


Die Zahl 500 soll vorher eingegeben werden können und somit veränderlich sein.
Dasselbe gilt für die www-Adresse.


Es muß daher erst eine Abfrage realisiert werden (Was ja kein Problem ist).


Nun das eigentliche Problem:


bei dem Befehl system("..."); kann ich keine Variablen anfügen/einfügen.


z.B.: system("C:/windows/system32/tracert.exe -w " + zahl + " " + adresse);
--> dies funktioniert nicht, aber so stelle ich mir das vor



Vielleicht kann mir ja jemand helfen....

bei Antwort benachrichtigen
d-oli Oli2002 „c++ und Dos-Befehl“
Optionen

Hmmm – kann's leider im Moment nicht ausprobieren. Habe aber irgendwie das Gefühl, dass es ein C-String Problem ist.
Denn ist " " nicht gleich 'Leerschlag' + '\0'?

Mach mal:

#include

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
d-oli Nachtrag zu: „Hmmm kann s leider im Moment nicht ausprobieren. Habe aber irgendwie das...“
Optionen

Ups ... da ist wohl irgend ein Problem mit '\' aufgetaucht ... denkt wohl es sei HTML ...
Ich probiers nach mal








/* Hmmm – kann's leider im Moment nicht ausprobieren. Habe aber irgendwie das Gefühl, dass es ein C-String Problem ist.
Denn ist " " nicht gleich 'Leerschlag' + '\0'? */

/* Mach mal: */

#include <iostream>

int main( int argc, char** argv ){

// Sollte bei C:\windows\system32\tracert.exe -w 500 www.google.de
// 4 ergeben

std::cout<<argc<<endl;
// Ausgabe =
// tracert.exe
// -w
// 500
// www.google.de
for( int i = 0; i < argc; ++i){
std::cout<<argv[i]<<endl;
}

return 0;
}

/* Probier es mal mit String zusammenfügen (kenne die Syntax nicht auswendig aber ich glaube strcnt oder strconcat – so was in der art). */
#include <iostream>
#include <string>
#include …

int main( int argc, char** argv ){

string Par = "";

// ...
strcnt( Par, argv[0] );
strcnt( Par, const string( " " ) );
strcnt( Par, argv[1] );
strcnt( Par, const string( " " ) );
strcnt( Par, argv[2] );
strcnt( Par, const string( " " ) );
strcnt( Par, argv[3] );
// so was in der Art ...

// ... und dann ...
system(Par);

// ...

return 0;
}

/* ... oder ... */
int main( int argc, char** argv ){

string Par = "C:/windows/system32/tracert.exe -w 500 www.google.de");

// ... und dann ...
system(Par);

// ...

return 0;
}

/* Gruss, d-oli */




Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
EDROD Oli2002 „c++ und Dos-Befehl“
Optionen

so wie ich das interpretiere brauchst du nur eine funktion die dir den festen string und die variablen zu einem neuen string zusammenfügt, in etwa so:

#include

bei Antwort benachrichtigen