Executar arquivo .bat

Pessoal tem como dentro do Java executar um arquivo .bat?

É claro que tem, basta usar o executável cmd.exe (no caso do Windows XP, 2000, NT, 2003)

cmd /c suabatch.bat

Cara to tentando jogar o comando que vc passou no meu arquivo java e da o erro de not statement, qual o meu erro nisso? Como uso o comando que vc passou?

Runtime.getRuntime.exec("c:\meu caminho\teste.bat");
1 curtida

Não lhe passei nenhuma linha de código em Java; esse é o comando que você vai ter de chamar via Runtime.exec. (Você deve ter achado esquisito ter um “/c” solto assim)

Está quase certo - só que arquivos .bat não são executados diretamente por Runtime.exec. Tente:

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

Se houver espaços em branco no nome do diretório, você precisa pôr aspas:

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

Cara dá um erro falando que não foi possívelo localizar a variável getRuntime. Tenho que fazer algo antes de usar isso?

1 curtida

Usa assim ,

String comando = “C:\teste\arquivo.zip”;
try
{
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+comando);
}
catch (IOException e)
{
e.printStackTrace();
}

blz pessoal,
eu queria saber oque seria “rundll32 SHELL32.DLL,ShellExec_RunDLL”,
alguem pode me explicar

Valeu!!

Otata, respondendo a sua pergunta:

[quote] eu queria saber oque seria “rundll32 SHELL32.DLL,ShellExec_RunDLL”,
alguem pode me explicar
[/quote]

rundll32.dll é a o processo usado para executar dlls no win

shell32.dll é a biblioteca que contem as API do shell

ShellExec_RunDLL é quem executa algo no shell do windows.

meuUUUUUUUUUUUUUUUUUUUUUUUUUU…

PRESTEM ATENCAO…

TA FALTANDO O PARENTESES DA FUNCTION…

//CERTO
Runtime.getRuntime().exec(“c:\mostra.bat”);

//ERRRADO
//Runtime.getRuntime.exec(“c:\meu caminho\mostra.bat”);

//Runtime.getRuntime() <---- .exec BLA…BLA…BLA…

VALEU ABRAXX E ESPERO TER AJUDADO

[quote=cimarinho]Usa assim ,

String comando = “C:\teste\arquivo.zip”;
try
{
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+comando);
}
catch (IOException e)
{
e.printStackTrace();
}[/quote]

Funciona perfeitamente. Obrigado.

[quote=Otata]blz pessoal,
eu queria saber oque seria “rundll32 SHELL32.DLL,ShellExec_RunDLL”,
alguem pode me explicar

Valeu!!

[/quote]
Depois o pessoal diz que não tem como deixar o Windows complicado. :lol:

De fato o código acima é bem complicadinho de entender hehehe… Alguém consegue fazer de outra maneira que funcione?

Está quase certo - só que arquivos .bat não são executados diretamente por Runtime.exec. Tente:

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

Se houver espaços em branco no nome do diretório, você precisa pôr aspas:

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

[/quote]

Deu certinho aqui pra mim! Mas pensei em algo que realmente eu não estava conseguindo fazer nem por um decreto, que era executar um bendito dum processo passando parâmetros para ele…(meu exemplo: “caminho”/udk.exe server dm-deck). Alguém aí já teve a experiência ou sabe alguma coisa sobre?

Abraços,

Diogo

Sim. Se rever o tópico verá que já foi respondida.