# EXE, BAT Datei in C öffnen



## n00oob (19. Oktober 2004)

Hallo!
Ich hab eine Frage an euch:
Gibt es einen Befehl in C, um ein Programm (Batch, exe) zu öffnen und das C Programm zu beenden? Können auch 2 Befehle sein (öffenen von bat o. exe, schliessen von C-Prog.
Hier der Quellcode:


```
#include <stdio.h>
#include <stdlib.h>
void main()
{
char auswahl[2];
int zahl;
printf("1 Prog1\n");
printf("2 Prog2\n");
printf("3 Prog3\n");
printf("4 Prog4\n");
printf("5 Prog5\n");
printf("Bitte treffen Sie eine Auswahl!");
gets(auswahl);
zahl = atoi(auswahl);
if (zahl == 1)
{
Prog1 öffnen;
}
else if (zahl == 2)
{
Prog2 öffnen;
}
else if (zahl == 3)
{
Prog3 öffnen;
}
else if (zahl == 4)
{
Prog4 öffnen;
}
else if (zahl == 5)
{
Prog5 starten;
}
}
```
 

Vielen Dank!


----------



## Aiju (19. Oktober 2004)

Im Moment fällt mir nur System (aus der Unit stdlib) ein 
Aber wenn auch WinAPI sein darf: ShellExecute
Ist zwar ein bissl schwieriger aber auch besser:

```
ShellExecute(0, 0, PfadZurExe, Parameter, Verzeichnis, SW_SHOW);
```


----------



## n00oob (19. Oktober 2004)

Hi!
Danke für deine Antwort.
Leider bin ein Voll   . Könntest du so net sein und den Code in meinen eintragen?


----------



## Aiju (19. Oktober 2004)

Hier Voll : (ich hab die exes prog1... gennant und system verwendet)


```
#include <stdio.h>
#include <stdlib.h>
void main()
{
char auswahl[2];
int zahl;
printf("1 Prog1\n");
printf("2 Prog2\n");
printf("3 Prog3\n");
printf("4 Prog4\n");
printf("5 Prog5\n");
printf("Bitte treffen Sie eine Auswahl!");
gets(auswahl);
zahl = atoi(auswahl);
switch(zahl)
{
case 1: system("Prog1.exe");break;
case 2: system("Prog2.exe");break;
case 3: system("Prog3.exe");break;
case 4: system("Prog4.exe");break;
case 5: system("Prog5.exe");break;
default: printf("Du kannst wohl nicht lesen! Geh in die Schule!\n");
}
```


----------



## n00oob (19. Oktober 2004)

Viiiiiiiiiiieeeeeeeeeeeelllllleeeeeeeeeeennnnn Dank!
Nur noch eine Frage: Was ist system? Ist das der Pfad? Wenn ja, wäre diese Form richtig: 
C:\Ordner\blabla.exe ?
Also so:
case 1: C:\Ordner\blabla.exe("Prog1.exe");break;


----------



## Aiju (19. Oktober 2004)

Tut mir leid das die Antwort so spät, bei mir ist mein Netz zusammengebrochen...
system ist die Methode. Also nicht so:
case 1: C:\Ordner\blabla.exe("Prog1.exe");break;
Sondern so:
case 1: system("c:\\ordner\\blabla.exe");break;
In C++ müssen in strings die (einfachen) backslashs(\)  durch doppele(\\) ersetzen


----------



## n00oob (19. Oktober 2004)

Vielen Dank das Prog funztr super 1a Hilfe hier ich werde euch weiterempfehlen!


----------



## IchBinDa (18. Juni 2005)

Hallo.
Geht es auch, dass Programm unter C++ in einem neuem Fenster zu öffnen?

Danke im Voraus...


----------



## Kaiser206 (27. Juni 2005)

ja es geht!
mit 
system("");
kann man alles was man auch in einer Einfachen Eingabeaufforderung kann!
Das wäre dann so:
system("start Prog.exe");

PS: Mann kann das aufrufen von Batch dateien sparfen indem man sie alle in das Programm integriert also:
system("@ECHO OFF");
system("@del ....");

mfg
Kaiser206


----------



## Tobias K. (27. Juni 2005)

moin


Oder du machst es vernümpftig und nimmst statt system, WinWxwc oder ShelExecuteEx oder CreateProcess.

Und welchen Grund gibt es Batch-Befehle in C/C++ einzubauen?


mfg
umbrasaxum


----------



## Kaiser206 (28. Juni 2005)

Welchen grund?
Wenn man z.B. keine Lust darauf hat zu viele externe Batch dateien im Programm zu haben?


----------



## Tobias K. (28. Juni 2005)

moin


So war die Frage garnicht gemeint. Sondern wozu sollte man Batch-Befehle und Datei benutzen wenn man das per C/C++ Befehle machen kann?


mfg
umbrasaxum


----------



## Kaiser206 (28. Juni 2005)

stimmt...
Aber ich habe z.B. keine Ahnung wie man das in C++ macht:

tree C:/ /F /A >> safe.txt

Das Programm speichert z.B. den gesammten Datenbaum von C:.
Ist nur ein Beispiel... Es gibt aber noch mehr.


----------



## Tobias K. (28. Juni 2005)

moin


Ok, es gibt ein paar Sachen die so natürlich viel einfacher gehen.
Aber für sowas müsttest du auch "nur" ne rekursive Funktion schreiben die dann die Arbeit für dich macht....


mfg
umbrasaxum


----------

