C++ Systembefehl : Datei öffnen

iJerkface

Lieutenant
Registriert
März 2012
Beiträge
665
Hi.
Code:
/*D. Siegel*/
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int anzahl;
    anzahl=3;
    
    for(int i=0 ; i<anzahl;i++)
    {system("cd C:\Users\Admin\Desktop\Petrus.exe");}
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Mir wird der Fehler ausgegeben dass jeweils \U \A usw keine gültigen Escapesequenzen seien.

Mach ich das ganze jedoch mit Doppelbackslash , so ist das Verzeichniss ungültig.

Wie sonst kann ich die Datei aus meiner Windows Consolenanwendung raus öffnen?

mfg iJerkface
 
Eine .exe Datei ist ja auch kein Verzeichnis...

Willst du eine Datei ausführen oder in ein Verzeichnis wechseln?
 
Mach das cd davor weg? Oder hat das da nen speziellen Grund das du en Verzeichnis wechseln willst?
 
Sorry , will natürlich die .exe öffnen :D
 
Das funktioniert dann ohne CD. Bedenke bitte, dass system eine betriebssystemabhängige Funktion ist und unter Linux anders funktioniert. Unter Windows rate ich eigentlich zu WinExec oder CreateProcess.
 
Also erstens (wie meine Vorredner schon schrieben) kann man kein CD (change directory) in einer EXE machen ;)
Mach mal überall doppelte Backslashs: C:\\Users\\Admin\\Desktop\\Petrus.exe
 
Code:
/*D. Siegel*/
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int anzahl;
    anzahl=1000000000;
    char befehl [80];
    
    for(int i=0 ; i<anzahl;i++)
    {strcpy(befehl,"explorer.exe c:\Desktop\Petrus.exe"); 

    system(befehl);
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Jedoch öffnet er nicht das gewünschte Programm sondern "Eigene Dokumente".

Warum?
 
Probier mal folgenden Code:

Code:
    /*D. Siegel*/
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
    int anzahl;
    anzahl=3;
    for(int i=0 ; i<anzahl;i++)
    {system("C:\\Users\\Admin\\Desktop\\Petrus.exe");}
    system("PAUSE");
    return 0;
    }
 
Code:
/*D. Siegel*/
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int anzahl;
    anzahl=1000000000;
    char befehl [80];
    
    for(int i=0 ; i<anzahl;i++)
    {

    system("explorer.exe C:\\Users\\Gamer\\Desktop\\Petrus.exe");
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Hat dann letztendlich funktioniert , es musste nur der richtige Pfad angegeben werden :D

Danke für die Mithilfe!
 
Brauch man wirklich die "explorer.exe" im Systemaufruf?
War der Meinung, dass das auch ohne geht. Teste das doch gerade nochmal ohne bitte.

EDIT: Meine Borland Installation ist leider auf einem anderen Rechner, sodass ich es gerade nicht testen kann, aber folgender Perl Code funktioniert ohne "explorer.exe". Sollte in C++ eigentlich genauso funktionieren:

Code:
#!perl -w

use strict; 
use warnings;

system("C:\\Windows\\notepad.exe");

exit 1;
 
Zuletzt bearbeitet:
Nein, man braucht natürlich kein "explorer.exe". Man sollte auch nicht system() verwenden sondern exec...(). Z.B. execv()
 
Mumpitzelchen schrieb:
Nein, man braucht natürlich kein "explorer.exe". Man sollte auch nicht system() verwenden sondern exec...(). Z.B. execv()

Korregier mich falls ich falsch liege, aber verdrängen die exec()-Varianten nicht das aktuelle Programm? Soll heißen, hätte Crapshit in seinem Beispiel statt system() einen der exec()-Varianten verwendet, so würde die Zeile

exit 1;

nie erreicht werden.
 
edit: ach wurde schon alles gesagt,
 
Zuletzt bearbeitet:
Zurück
Oben