cmd datei startet nicht

motoric18

Bekanntes Mitglied
Hallo, kleines problem meine cmd Datei wird nicht gestarten wo ist den der Fehler ????
bitte um Hilfe.

//--------------------------------------------------------------------------------------
if (System.getProperty("os.name").toLowerCase().startsWith("windows"))
{

Process p = Runtime.getRuntime().exec("cmd C:\\Dokumente und Einstellungen\\Ric\\Desktop\\Projekte\\Tagesbericht\\Tagesbericht_v_2.0\\build.cmd");
System.out.println("Starten der Datei build.cmd");
}
//---------------------------------------------------------------------------------------

Im bock wird gesprungen aber leider die Datei nicht gestartet. Würd mich auf eine Antwort freuen.

GRUß
 
Java:
String path = "C:\\Dokumente und Einstellungen\\Ric\\Desktop\\Projekte\\Tagesbericht\\Tagesbericht_v_2.0\\build.cmd";
String cmdPath = "C:\\WINDOWS\\system32\\cmd.exe";
Process p = Runtime.getRuntime().exec(new String[] {cmdPath, path});
Funktioniert das?
 
Ah, es fehlt [c]/C[/c] - man müsste halt die Spezifikation der Parameter für [c]cmd[/c] lesen können 😉
Rufs so auf: [c]new String[] {cmdPath, "/C", path}[/c]
 
tut mir leid die cmc wird nicht ausgeführt.
leider bekomme ich das auch nicht hin, aber danke für deine Hilfe.

Also falls ihr den fehler bemrkt bitte bescheid geben, danke.
 
Wenn du mir solch einer Einstellung ran gehst, wirst du den Fehler nie finden.
Wieso überprüfst du nicht - ohne dass wir dich dazu anstossen müssen -...:
- ob der Pfad zu cmd.exe mit deinem Computer matcht
- ob der Pfad zur Datei wirklich korrekt ist
- Was passiert, wenn du diesen Befehl von Hand in der Konsole eingibst
- Was passiert, wenn du von Hand [c]cmd /C ...[/c] aufrufst
 
ahhh blitzmerker 🙂 was glaubst du was ich wohl schon versucht habe.
Ne aber ich sitze am rechner und warte bis mir einer die Richtung gibt.
IST KLAR.
 
Java:
Process p = Runtime.getRuntime().exec("cmd /c \"C:\\Dokumente und Einstellungen\\Ric\\Desktop\\Projekte\\Tagesbericht\\Tagesbericht_v_2.0\\build.cmd\"");

Die Leerzeichen sind neue Parameter = neuer Befehl der an cmd übergeben wird..

Dh, cmd führt das hier aus nacheinander aus:
C:\dokumente
und
Einstellungen\Ric\Desktop\Projekte\Tagesbericht\Tagesbericht_v_2.0\build.cmd

Kapselt man ein " " um das ganze, so ist das ganze nur 1 Parameter und sollte funktionieren...
 
ahhh blitzmerker 🙂 was glaubst du was ich wohl schon versucht habe.
Na dann sag uns doch, was du bereits versucht hast, und was die Resultate sind. Wenn du nicht sagst, was du gemacht hast, dann muss ich davon ausgehen, dass du nichts gemacht hast - was gerade bei den Anfängerthemen des öfteren vorkommt...

Die Leerzeichen sind neue Parameter = neuer Befehl der an cmd übergeben wird..

Darum hab ich ihm den [c]String[][/c] empfohlen, das funktioniert ohne Probleme 🙂
 
@faetz: Bin ich mir nicht so sicher.. Ich kapsel da lieber drum rum und das hat immer funktioniert..

Problem ist ja cmd.exe selbst.. Das kriegt das zwar als 1 Parameter übergeben, aber die Parameteruntertrennung sind nunmal Leerzeichen..
 
mir scheint es so, als wartet der TO darauf, dass ein Fenster auspoppt o.ä. Warum bist du denn der Meinung, dass es nicht funktioniert? Hast du dir mal die Streams vom Process auf der Console ausgegeben? Das letzte, was ich mit einem externen Aufruf gemacht hab, habe ich mit dem ProcessBuilder gemacht, weil es bei exec irgendwie auch nicht richtig anlaufen wollte. Aber faetz hat schon recht, wenn man das in einem Array übergibt braucht man auch nichts mehr qualifizieren.
 
@faetz: Schön für die Doku, gehen tuts aber trotzdem nicht 😉

Java:
String cmds[] = {"cmd", "\"D:\\TEMP\\test ordner\\test.cmd\""};
+ exec(cmds); = geht nicht

Java:
String cmds[] = {"cmd", "D:\\TEMP\\test ordner\\test.cmd"};
+ exec(cmds); = geht nicht

Java:
String cmds[] = {"cmd", "/c", "D:\\TEMP\\test ordner\\test.cmd"};
+ exec(cmds); = geht nicht

Java:
String cmds[] = {"cmd", "/c", "\"D:\\TEMP\\test ordner\\test.cmd\""};
+ exec(cmds); = GEHT! (man muss noch " " drum rummachen)

Lustig finde ich ja noch das hier:
Java:
String cmds[] = {"cmd /c \"D:\\TEMP\\test ordner\\test.cmd\""};
+ exec(cmds); = GEHT NICHT!

Schreibt man das ganze aber nicht in ein Array, sondern als Einzelstring also so (was meine ERSTE Antwort zum Thema war):
Java:
Runtime.getRuntime().exec("cmd /c \"D:\\TEMP\\test ordner\\test.cmd\"");
= GEHT!!!

Bei der Array Methode will es einfach den [0] Eintrag vom CMD-Array FIX ausführen.. Dh, er will halt den ganzen String executen als Binary, was ja nicht gehen wird, weil die Binary nur cmd.exe alleine ist..

Ich hab mich in der Vergangenheit schon oft genug mit dem rumärgern müssen...
 
Mal ganz nebenbei @- TE: Bist du im richtigen WorkDir? Vieleicht ligt es daran, ich weiß nicht wo standartmäßig der WorkDir gesetzt wird...
 
@faetz: Naja, ich habs auf Win7 getestet.. Aber grundsätzlich gilt, keine Leerzeichen in File-namen und keine Sonderzeichen 😀
Aber Dokumente und ... ist ja von Win selbst so angelegt...
 

Zurück
Oben