Galera, estou mais uma vez precisando de sua ajuda.
gostaria de saber como execultar comando cmd em java
Algoritmo:
*Abrir cmd
*inserir comando nele via variavel
*execultar comando
Esta função você pode utilizar em Java para executar comandos como se estivesse no prompt do DOS (command):
	public synchronized static String execCommand(final String commandLine) throws IOException {
		boolean success = false;
		String result;
		Process p;
		BufferedReader input;
		StringBuffer cmdOut = new StringBuffer();
		String lineOut = null;
		int numberOfOutline = 0;
		try {
			p = Runtime.getRuntime().exec(commandLine);
			input = new BufferedReader(new InputStreamReader(p.getInputStream()));
			while ((lineOut = input.readLine()) != null) {
				if (numberOfOutline > 0) {
					cmdOut.append("\n");
				}
				cmdOut.append(lineOut);
				numberOfOutline++;
			}
			result = cmdOut.toString();
			success = true;
			input.close();
			
		} catch (IOException e) {
			result = String.format("Falha ao executar comando %s. Erro: %s", commandLine, e.toString());
		}
		// Se não executou com sucesso, lança a falha
		if (!success) {
			throw new IOException(result);
		}
		return result;
	}wiliamps
Meu Deus, pra q tudo isso?
Isso ja resolve
private void exec(){  
        Process exec;  
        try {  
            exec = Runtime.getRuntime().exec("ipconfig");  
            if ( exec.waitFor() == 0)  
                System.out.println("Executado.");  
            else  
                System.out.println("ERRO");  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (InterruptedException e) {  
            e.printStackTrace();  
        }  
} 
que traduzindo é isso
Runtime.getRuntime().exec("ipconfig");  =]
charleston10, ao invés de tentar desmerecer minha ajuda ao colega, por que você não procura uma outra pessoa que necessita de ajuda?
A função que passei é sincronizada para evitar gerar muitos frames de acesso para comando DOS na JVM, trata a resposta e a retorna corretamente e ainda lança exceção legível para ajudar o usuário.
Não tem nada de perplexo na resposta, apenas procurei tratar o nosso amigo lá como um programador de linha profissional e não um amador.
wiliamps
–
^^
[quote=charleston10]E voce esqueceu que a classe Runtime, foi feita pra isso?
Quem desenvolveu foi amador? E outra se tem uma classe pronta, é pq minimiza a tarefa, qual vale mais 1000 linhas de codigos ou 10 linhas de codigos que faz a mesma coisa?
Leva em consideração que ninguem vai ver seu código, eu e vc somos anonimos … ^^[/quote]
Presta atenção, cara. Ele usou a classe Runtime na linha 14 do código dele.
A diferença é que ele fez isso do jeito certo, tratando os fluxos de saída (que podem travar o processo se não forem tratados).
Uma modificação interessante no método dele seria passar por parâmetro o PrintWriter para qual o output será jogado. E então retornar o inteiro retornado pelo método waitFor:
	public synchronized static String execCommand(final String commandLine, PrintWriter out) {
		Process p = Runtime.getRuntime().exec(commandLine);
		BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
		String lineOut;
		while ((lineOut = input.readLine()) != null) {
		    out.println(lineOut);
		}
		input.flush();                
		input.close();
		return p.waitFor();
	}Esse inteiro é o código de retorno do processo. Outra variação seria também tratar o error stream.
Boua…
E que tal assim?
import java.io.IOException;
import java.util.Scanner;
public class Programa {
	public static void main(String[] args) {
		try {
			Process process = Runtime.getRuntime().exec("ipconfig");
			Scanner leitor = new Scanner(process.getInputStream());
			while (leitor.hasNextLine()) {
				System.out.println(leitor.nextLine());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}Também é válido. Mas você parte do pressuposto que o outputstream será sempre texto (o que é válido nesse caso, mas nem sempre), e que a saída será “bem comportada” (sempre terminando no \n). Algumas vezes os processos não colocam o \n no último texto escrito.
Faltou também chamar o waitFor().
Outra coisa. Evite ressuscitar tópicos muito antigos. Esse era de 2012.