Executando programas externos

Olá. Quero que minha aplicação java execute uma aplicação externa.

Criei a classe:

import java.io.IOException;

public class Teste {
	public static void main(String[] args) {        
    	String[] comando = {"cmd", "/c", "start", "C:\\teste.bat"};
        try {
        	Runtime.getRuntime().exec(comando);
		} catch (IOException e1) {
			e1.printStackTrace();
		}
	}
}

Esse código funcionou OK, o programa executou o bat.

Mas quando tento executar o bat na pasta: “C:\pasta teste\teste.bat” aí não funciona mais, acho que é por causa do espaço em branco.

Como eu resolvo isso? Já tentei colocar aspas no caminho do arquivo mas não funcionou.

P.S.: Se eu colocar “C:\pastat~1\teste.bat” funciona! Mas o problema é que futuramente esse diretório será escolhido pelo usuário por um JFileChooser, aí não dá fazer a conversão.

Já tentou isso

Quando tem espaço vai aspas a mais.

Runtime.getRuntime.exec("cmd /c \"c:\\seu caminho\\teste.bat\"");

Quando não tem espaço no caminho.

Runtime.getRuntime.exec("cmd /c \ c:\\seu caminho\\teste.bat\");

Rpz tem algo acho que tem a ver como o star vai interpretar esse comando:
Se você roda no DOS(cmd.exe) esse comando: start “c:\Nova pasta\teste.txt”
Só vai aparecer outra tela do DOS.

Para simplifiocar as coisas você pode usar só:
String[] comando = {“notepad”, “C:\Nova pasta\teste.txt”};

Ai voçê já pode escolher em qual programa que vc quer abrir o arquivo…
Blz ? :wink:

[quote=sodrope]Já tentou isso

Quando tem espaço vai aspas a mais.

Runtime.getRuntime.exec("cmd /c \"c:\\seu caminho\\teste.bat\"");

Quando não tem espaço no caminho.

Runtime.getRuntime.exec("cmd /c \ c:\\seu caminho\\teste.bat\");

Desse jeito funcionou… Valeu

Ahhh era um *.BAT … não tinha visto… heheh
blz !

[quote=RicardoCobain]Ahhh era um *.BAT … não tinha visto… heheh
blz ![/quote]

Era um txt, mas depois eu editei o post hehehe…