# Probleme mit Runtime.getRuntime().exec("cmd.exe")



## Brainiac (6. Sep 2006)

Ich versuche mit dem Runtime.getRuntime().exec Befehl eine Befehlszeile in der Kommandozeile auszuführen.
Der Befehl so in der Kommandozeile per Hand gestart geht:

"F:\UFO Aftershock\Profiles\Brainiac\Saves\vfstool.exe" e "F:\UFO Aftershock\Profiles\Brainiac\Saves\Storage.vfs" "F:\UFO Aftershock\Profiles\Brainiac\Saves\Storage"

in Java hab ich ihn dann wie folgt codiert:

```
String executionString = "\"F:\\UFO Aftershock\\Profiles\\Brainiac\\Saves\\vfstool.exe\" e \"F:\\UFO Aftershock\\Profiles\\Brainiac\\Saves\\Storage.vfs\" \"F:\\UFO Aftershock\\Profiles\\Brainiac\\Saves\\Storage\"";
```

Nun meine erfolglosen Versuche:
1.

```
Process p = Runtime.getRuntime().exec("cmd.exe" + executionString);
```

2.

```
Process p = Runtime.getRuntime().exec("cmd.exe /c start" + executionString);
```

3.

```
Process p = Runtime.getRuntime().exec("cmd.exe");
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
output.write(executionString);
output.flush();
```

Leider führt nichts davon zum Erfolg. Nun habe ich versuche mir den Errorstream anzeigen zu lassen. Wenn ich das tue, bleibt das Programm ohne Fehlermeldung hängen (Eigentlich sollte sich ein Fenster öffnen, tut es aber nicht mehr) und ich muß es über den Prozessexplorer von Netbeans killen. SO habe ich das versucht:

```
BufferedReader input = new BufferedReader(new InputStreamReader(p.getErrorStream()));
System.out.println(input.readLine());
```

So wo liegt mein Fehler?


----------



## seppal (6. Sep 2006)

Probiers mal ohne das cmd.exe:


```
Runtime.getRuntime().exec( command );
```


----------



## Pulvertoastman (6. Sep 2006)

dume frage:

kann es sein, dass zwischen "cmd.exe" und executionString einfach nur ein Leezreichen fehlt?


----------



## thE_29 (6. Sep 2006)

Jop 

wie wärs mit der Exception die geworfen wird?

Was steht den da?


----------



## Brainiac (6. Sep 2006)

seppal hat gesagt.:
			
		

> Probiers mal ohne das cmd.exe:
> 
> 
> ```
> ...



Super genau das wars:


```
Process p = Runtime.getRuntime().exec("\"F:\\UFO Aftershock\\Profiles\\Brainiac\\Saves\\vfstool.exe\" e \"F:\\UFO Aftershock\\Profiles\\Brainiac\\Saves\\Storage.vfs\" \"F:\\UFO Aftershock\\Profiles\\Brainiac\\Saves\\Storage\"");
```
 funzt so wie ich mir das vorstelle.

@Edit:
Kann ich nun ein warten auf den exec einbauen ohnen einen zweiten Thread zu eröffnen eröffnen? Also so was wie das "cmd.exe /c start"?

@Edit 2:
Hab was gefunden:

```
p.waitFor();
```


----------

