Em meu aplicativo Java, desejo executar um arquivo em lote que chama " scons -Q implicit-deps-changed build\file_load_type export\file_load_type
"
Parece que não consigo nem mesmo fazer meu arquivo em lote executar. Estou sem ideias.
Isso é o que tenho em Java:
Runtime.
getRuntime().
exec("build.bat", null, new File("."));
Anteriormente, eu tinha um arquivo Python Sconscript que queria executar, mas como isso não funcionou, decidi que chamaria o script por meio de um arquivo em lote, mas esse método ainda não teve sucesso.
fonte
Win+R
(Runtime) pode executar arquivos em lote diretamente.Às vezes, o tempo do processo de execução do encadeamento é maior do que o tempo do processo de espera do encadeamento da JVM. Isso costuma acontecer quando o processo que você está chamando leva algum tempo para ser processado, use o comando waitFor () da seguinte maneira:
Dessa forma, a JVM irá parar até que o processo que você está chamando seja concluído, antes de continuar com a pilha de execução do encadeamento.
fonte
fonte
Para executar arquivos em lote usando java, se é isso que você está falando ...
Isso deve servir.
fonte
ProcessBuilder é a maneira Java 5/6 de executar processos externos.
fonte
O executável usado para executar scripts em lote é
cmd.exe
aquele que usa o/c
sinalizador para especificar o nome do arquivo em lote a ser executado:Teoricamente, você também deve ser capaz de executar Scons dessa maneira, embora eu não tenha testado isso:
EDIT: Amara, você diz que isso não está funcionando. O erro que você listou é o erro que você obteria ao executar o Java de um terminal Cygwin em uma caixa do Windows; é isso que você está fazendo? O problema com isso é que o Windows e o Cygwin têm caminhos diferentes, então a versão do Java para Windows não encontrará o executável scons no caminho do Cygwin. Posso explicar melhor se esse for o seu problema.
fonte
testado com jdk1.5 e jdk1.6
Isso estava funcionando bem para mim, espero que ajude outras pessoas também. para conseguir isso, lutei mais dias. :(
fonte
Eu tive o mesmo problema. No entanto, às vezes o CMD falhava ao executar meus arquivos. É por isso que eu crio um temp.bat na minha área de trabalho. Em seguida, esse temp.bat executará meu arquivo e, em seguida, o arquivo temporário será excluído.
Eu sei que este é um código maior, porém funcionou para mim em 100% quando até mesmo Runtime.getRuntime (). Exec () falhou.
fonte
O seguinte está funcionando bem:
fonte
Este código executará dois commands.bat que existem no caminho C: / folders / folder.
fonte
Para expandir a resposta de @Isha, você pode simplesmente fazer o seguinte para obter a saída retornada (post-facto, não em tempo real) do script que foi executado:
fonte