Executando comandos do DOS via Java

[ad#texto]

Tenho visto várias pessoas necessitando de uma forma de executar comandos de DOS ou via Terminal (Linux) a partir de aplicações Java, e além da execução capturar se o mesmo foi executado com erro ou sucesso e se possível o seu retorno.

Isto é bem simples de ser implementado em Java, veja o código abaixo:

public class ExecComando {

public static void executar(java.lang.String scriptExec, java.lang.String typeCommand, java.lang.String command){

String[] finalCommand;

finalCommand = new String[3];

finalCommand[0] = scriptExec;

finalCommand[1] = typeCommand;

finalCommand[2] = command;

Process proc;

String sucesso = "", erro = "", escuta;

try{

proc = Runtime.getRuntime().exec(finalCommand);

proc.waitFor();

BufferedReader inputSucesso = new BufferedReader(new InputStreamReader(proc.getInputStream()));

BufferedReader inputErro = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

while ((escuta = inputSucesso.readLine()) != null) {

sucesso += escuta + "\n";

}

inputSucesso.close();

while ((escuta = inputErro.readLine()) != null) {

erro += escuta + "\n";

}

inputErro.close();

if(!sucesso.equals("")){

System.out.println("Sucesso!");

System.out.println(sucesso);

}else if(!erro.equals("")){

System.out.println("Erro!");

System.out.println(erro);

}

}catch (IOException ex) {

ex.printStackTrace();

}catch (InterruptedException ie){

ie.printStackTrace();

}

}

}

O que este bloco de código Java faz?

Basicamente o método executar() recebe como parâmetros o terminal e o comando a ser executado, assim ele abre um processo de RunTime que vai de fato invocar o terminal e executar o comando para após feito isso ele irá capturar o InputStream em caso de sucesso ou erro e depois irá ler e converte-los em um String para finalmente ser impressa no console.

O próprio código Java é autoexplicativo e bem simples de ser estudado e assimilado.

Para executa-lo, basta acionar o método da seguinte forma:

ExecComando.executar("cmd.exe", "/C", "dir c:");

Em tempo, variações deste código Java estão espalhadas pela internet, mas se você executar um comando Java válido, como por exemplo java –version, será retornado um erro e o descrito da execução indicando que o comando foi executado com sucesso, o que de fato ocorre, isto é uma característica que pode te atrapalhar, alguém sabe a solução para ela?

Faça o teste e execute o comando java –version para ver o resultado.

No próximo post irei colocar a solução para esta questão, é tão simples como o próprio código que mostrei aqui.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.