Execução de arquivo BAT

Prezados,

Tenho uma aplicação que chama uma arquivo BAT, neste arquivo chama uma aplicação que inicializa um servidor corba caso o servidor não esteja em execução, outro detalhe é que é gerado um arquivo ior(arquivo com os dados do servidor) em que minha aplicação precisa para se conectar a equipamentos da minha rede.

O problema que eu estou tendo é quando o servidor não esta inicilizado, desta forma o arquivo o arquivo nao existe e minha aplicaçao nao consegue se conectar nos elementos pq o arquivo ior nao esta presente, isto porque a aplicação não aguarda o termino da execução do arquivo BAT, dae quando eu rodo pela segunda vez é que consigo se conectar aos elementos da rede.

Alguém sabe como faço para somente executar uma linha após a execução total do arquivo BAT?

vejam o meu codigo:

           // Inicializando o servidor corba (Kea)
            Process p =  Runtime.getRuntime().exec("cmd /c start C:\\cpp_app\\ea_start.bat");
            p.waitFor();
            
            // Configurando as propriedades do sistema (A partir daqui so pode ser executado apos a execucao total do BAT)
            System.setProperty("com.keymile.kcst.connection.MileGateConnectionManager.FactoryDir", "c:/cst");
            System.setProperty("com.keymile.util.trace.serveroff", "true");

Att,

Paulo

Escreve outro BAT com essa linha e depois chama ele.

POG: Programação Orinteada a Gambiarra :smiley:

Eu posso estar enganado, mas:

cmd /c start C:\\cpp_app\\ea_start.bat

Inicia o ea_start.bat em outro processo > o processo cmd que você chamou acabará logo após o início do ea_start.bat;

cmd /c C:\\cpp_app\\ea_start.bat

Inicia o ea_start.bat no mesmo processo que você iniciou. Desta forma, um p.waitFor() irá esperar o término da execução do ea_start.bat.

Só uma coisa: caso a ‘inicialização’ não termine (ex., alguns .bat do apache/tomcat/jboss que também servem de console de erros), sua chamada p.waitFor() não retornará nunca.