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.

Tags:,
Petter Rafael
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.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 324 outros assinantes

Busca

julho 2020
DSTQQSS
 1234
567891011
12131415161718
19202122232425
262728293031 

Categorias