Executar comando dos com a tela oculta

11 respostas
M

olá pessoal
tenho um arquivo .bat
e para executar ele pelo java utilizo o comando

Runtime.getRuntime().exec("cmd.exe /c start c:\\executa.bat");

mas ele esta abrindo a tela do dos
tem como executar ocultando a tela do dos

obrigado

11 Respostas

R

ja tentou colocar /Q

Runtime.getRuntime().exec(“cmd.exe /Q /c start c:\executa.bat”);

ou /K

voce tbm pode colocalo minimizado com outro nome

Runtime.getRuntime().exec(“cmd.exe /min “title” c:\executa.bat”);

M

ja tentei e nao deu certo …

M

nada pessoal ?
to precisando muito disso

criador

Porque você não executa diretamente o .BAT ao invés de chamar o CMD para executar ele:

Runtime.getRuntime().exec("c:\\a.bat");

Assim não apresentará nenhuma tela do DOS.

Abraços!

M

ola pessoal
se eu chamar direto o .bat dae ele não executa, não descobri o porque

//Runtime.getRuntime().exec("cmd.exe /c start c:\\JPlugin\\jupdate.bat"); // executa mas mostra a tela do dos, se o usuario fechar a tela do dos nao atualiza
                Runtime.getRuntime().exec("c:\\JPlugin\\jupdate.bat"); // não executa
                //Runtime.getRuntime().exec("calc"); // funciona
                System.exit(0);

porem se eu executar outro aplicativo (calc por exemplo) dae funciona, ele abre a calculadora do windows normalmente
e o meu arquivo .bat esta funcionando, se eu executar ele roda 100 %
o que ue faço no meu .bat é renomear o java que esta sendo executado e atualizo, copio outro arquivo .jar no lugar do que esta executando, como uma atualização automatica

se eu rodo com o cmd.exe funciona 100 % , mas como abre a tela do dos, caso o usuario clique em fechar essa tela do dos, dae meu sistema não vai atualizar automaticamente

segue o conteudo do meu update.bat (coloquei alguns echo apenas para teste, na versão final vou tirar eles, para não mostrar a tela do dos)

cls
timeout 10
if not exist c:\JPlugin\JMaisBB_NEW.jar goto exit

echo renomeando ...
ren c:\JPlugin\JMaisBB.jar                   JMaisBB_OLD.jar
ren c:\JPlugin\JMaisBB_NEW.jar      JMaisBB.jar
start /b c:\JPlugin\jplugin.exe -jar c:\JPlugin\jmaisbb.jar
echo iniciando ....

:exit
echo nao existe atualizacao, saindo ...
exit
M

nada pessoal ???

snowblacksoul

Cara fiz um exemplo meio rápido, não cheguei a testar, dê uma olhada se resolve seu problema!!

public class JavaApplication6 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        //start /min c:\scripts\vupt.bat 
    String comando = "start /min C:\\PlanoMLocal\\ExecutaPlMinutos.bat";//caminho onde encontra o executavel
         try{
             Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + comando);
             System.exit(0);
         }catch(IOException e){
             JOptionPane.showMessageDialog(null, "Erro ao executar o comando : " + e);
         }

    }
}

abraços!!

M

ola
desta maneira ele abre a tela do dos minimizada
mas o problema é que não está conseguindo executar os comandos do meu arquivo .bat porque a minha aplicação, o meu .jar está em execução ainda, dae o SO não deixa renomear porque o processo está executando
parece que o java aguarda o comando Runtime.getRuntime().exec(""); termina de executar para dar o system.exit(); , correto ?

snowblacksoul

Bom eu fiz o teste aqui e executa minimizado a tela do dos
Mas o que vc disse esta correto, enquanto tiver executando vc nao consegue fazer nada! só apos executar, ele entra no System.exit(0);
Mas o que vc nao consegue fazer agora!!!?

M

preciso criar um rotina de atualização automatica do meu arquivo .jar
criei um thread que fica lendo o servidor de tempos em tempos buscando atualização
caso encontre, ele baixa a atualização e no meu .jar chamo um .bat que renomeia o arquivo baixado para o meu .jar que esta sendo executando
mas como o meu .jar ta executando não deixa renomear

snowblacksoul

Entao depois de baixar, ai sim vc vai renomear, não tem como vc renomear algo que esteja utilizando correto!

Criado 22 de junho de 2012
Ultima resposta 6 de set. de 2012
Respostas 11
Participantes 4