Retornar saída do prompt

4 respostas
E

Bom, como eu faço pra executar um comando no prompt e ter o retorno no meu programa? Utilizando um getRuntime().exec, eu consigo executar aplicativos, porém, os comandos usados no cmd não executam. =s
A minha ideia era de redirecionar a saída do prompt para um arquivo, e depois ler o que foi escrito, só que o arquivo não chega a ser criado. Onde está o erro?

Runtime nome; nome = Runtime.getRuntime(); nome.exec("cmd /c ping > arquivo");

Acabo de chegar aqui, me desculpem se fiz\disse algo errado.

4 Respostas

Ataxexe

err0r:
Bom, como eu faço pra executar um comando no prompt e ter o retorno no meu programa? Utilizando um getRuntime().exec, eu consigo executar aplicativos, porém, os comandos usados no cmd não executam. =s
A minha ideia era de redirecionar a saída do prompt para um arquivo, e depois ler o que foi escrito, só que o arquivo não chega a ser criado. Onde está o erro?

Runtime nome; nome = Runtime.getRuntime(); nome.exec("cmd /c ping > arquivo");

Acabo de chegar aqui, me desculpem se fiz\disse algo errado.

Tente usar um array para separar o comando dos argumentos:

String [] cmd = {"cmd" , "/c", "ping > arquivo"}; Process p = Runtime.getRuntime().exec(cmd);

E

Ainda assim não funcionou. Poderia explicar a necessidade do ‘Process’?

Ataxexe

Ainda assim não funcionou. Poderia explicar a necessidade do ‘Process’?

Eita, foi só resquício de um CTRL+C / CTRL+V. O Process serve para você controlar o processo criado e obter algumas informações sobre ele. Uma informação seria o output e isso pode até ser útil pra você:

Em vez de copiar outro código, vou colocar o link aqui:

A resposta dessa pergunta tem um código que você pode aproveitar para pegar o output. Em vez de imprimir as linhas do stream você pode armazená-las em um StringBuilder, por exemplo.

E

Brigadão mesmo pela ajuda! O código ficou assim:

String line;
        Process p;
        //executa o processo e armazena a referência em 'p'
        p = Runtime.getRuntime().exec("cmd /c dir");
        
        //pega o retorno do processo
        BufferedReader stdInput = new BufferedReader(new 
                 InputStreamReader(p.getInputStream()));
        
        //printa o retorno
        while ((line = stdInput.readLine()) != null) {
                System.out.println(line);
        }

Sua ideia foi bem melhor, já que nem foi necessário usar arquivo.

Criado 17 de setembro de 2013
Ultima resposta 17 de set. de 2013
Respostas 4
Participantes 2