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

Squirby

Mitglied
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

Code:
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
 
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.
 
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:

Code:
"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:
 
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

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
 
also wie gesagt, im Konsolenfenster wird ja der Fortschritt angezeigt, deswegen brauch ich die Konsole

aber ich habs jetzt gelöst, also danke euch 🙂
 
Du könntest ja mit
Code:
Prozess.getInputStream()
den InputStream deines Programms holen und daher brauchst du dann die Konsole nicht mehr.
 

Neue Themen


Zurück
Oben