# exec( "cmd /c") aber Konsole soll offen bleiben



## Squirby (9. Apr 2011)

Hallo,

ich hab ein kleines Problem bei meinem Programm. Ich muss auf der Kommandozeile (Windows) einen Befehl ausführen, welcher ein Programm startet. Ich hab das bisher folgendermaßen probiert


```
Process p = Runtime.getRuntime().exec( "cmd /c" + (hier String der Programm aufruft) );
```

allerdings geht auf diese Weise das Konsolenfenster gar nicht auf. Bei mir muss das Konsolenfenster aber offen bleiben, denn auf diesem wird der Fortschritt des Programms angezeigt welches ich aufrufe.

???:L

Viele Grüße


----------



## Simon_Flagg (9. Apr 2011)

vllt hilft ein Pause hinter dem befehl?

lg


----------



## AmunRa (9. Apr 2011)

Warum rufst du das Programm nicht selbst auf, sondern gehst den Umweg über die CMD
?


----------



## Squirby (9. Apr 2011)

Das mit der Pause dürfte nicht gehen, weil der Aufrufbefehl für das zweite Programm erst ausgeführt wird, wenn das erste Programm beendet. Aber ich versuche es gleich sobald ich kann, danke.

Ich mache es über Konsole, weil das Programm lange (im Hintergrund) arbeitet und man nur auf der Konsole den Fortschritt überwachen kann.


----------



## Gast2 (9. Apr 2011)

versuch mal "start cmd ..."


----------



## Squirby (9. Apr 2011)

Das mit dem "cmd start..." war ein guter Tipp, danke 
das allein ging zwar nicht, aber habs jetzt folgendermaßen geschafft "cmd /c start cmd /k ..."

Jetzt hab ich aber ein zweites Problem, denn ich hab einen Quellpfad und einen Zielpfad, 
die ich angeben muss und es gehört noch unbedingt "-nogui" dazu. Also z.B:


```
"cmd /c start cmd /k \"C:\\dokument 1.txt\" -nogui \"C:\\dokument 2.txt\""
```

Sowohl der Quellpfad als auch der Zielpfad sollten in Anführungszeichen stehen, damit die Leerzeichen keine Fehler verursachen. 

Das Problem ist jetzt, wenn nur der Quellpfad Anführungszeichen hat, funktioniert das Programm.
Wenn Quell-\ und Zielpfad in Anführungszeichen stehen, wie oben im Code, funktioniert es nicht.

:bahnhof:


----------



## Gast2 (9. Apr 2011)

Squirby hat gesagt.:


> Das Problem ist jetzt, wenn nur der Quellpfad Anführungszeichen hat, funktioniert das Programm.
> Wenn Quell-\ und Zielpfad in Anführungszeichen stehen, wie oben im Code, funktioniert es nicht


hast Du Dir einfach mal die Kommandozeile ausgeben lassen? ... das was Du gepostet hast ist, wie es sein muss - nicht wie es (anscheinend) ist

ansonsten schließe ich mich der Meinung von AmunRa an



AmunRa hat gesagt.:


> Warum rufst du das Programm nicht selbst auf, sondern gehst den Umweg über die CMD?



Du kannst das Programm direkt aufrufen ... der Umweg über die Konsole ist Unsinn


----------



## Squirby (11. Apr 2011)

also wie gesagt, im Konsolenfenster wird ja der Fortschritt angezeigt, deswegen brauch ich die Konsole

aber ich habs jetzt gelöst, also danke euch


----------



## AmunRa (11. Apr 2011)

Du könntest ja mit 
	
	
	
	





```
Prozess.getInputStream()
```
 den InputStream deines Programms holen und daher brauchst du dann die Konsole nicht mehr.


----------



## Squirby (11. Apr 2011)

achso, das ist ja interessant 

Sry, das Thema ist neu für mich.

Danke, werde es nochmal so probieren, das ist natürlich eleganter


----------

