En mi aplicación Java, quiero ejecutar un archivo por lotes que llame a " scons -Q implicit-deps-changed build\file_load_type export\file_load_type
"
Parece que ni siquiera puedo ejecutar mi archivo por lotes. No tengo ideas.
Esto es lo que tengo en Java:
Runtime.
getRuntime().
exec("build.bat", null, new File("."));
Anteriormente, tenía un archivo Python Sconscript que quería ejecutar, pero como eso no funcionó, decidí que llamaría al script a través de un archivo por lotes, pero ese método aún no ha tenido éxito.
fuente
Win+R
(Runtime) puede ejecutar archivos por lotes directamente.A veces, el tiempo del proceso de ejecución del subproceso es mayor que el tiempo del proceso de espera del subproceso de JVM, suele suceder cuando el proceso que está invocando tarda algún tiempo en procesarse, utilice el comando waitFor () de la siguiente manera:
De esta manera, la JVM se detendrá hasta que finalice el proceso que está invocando antes de continuar con la pila de ejecución de subprocesos.
fuente
fuente
Para ejecutar archivos por lotes usando java si eso es lo que estás hablando ...
Esto debería hacerlo.
fuente
ProcessBuilder es la forma Java 5/6 de ejecutar procesos externos.
fuente
El ejecutable que se usa para ejecutar scripts por lotes es el
cmd.exe
que usa la/c
bandera para especificar el nombre del archivo por lotes a ejecutar:Teóricamente, también debería poder ejecutar Scons de esta manera, aunque no lo he probado:
EDITAR: Amara, dices que esto no está funcionando. El error que enumeró es el error que obtendría al ejecutar Java desde una terminal Cygwin en una caja de Windows; es esto lo que estas haciendo? El problema con eso es que Windows y Cygwin tienen rutas diferentes, por lo que la versión de Windows de Java no encontrará los scons ejecutables en su ruta Cygwin. Puedo explicar más si esto resulta ser su problema.
fuente
probado con jdk1.5 y jdk1.6
Esto funcionó bien para mí, espero que también ayude a otros. para conseguir esto he luchado más días. :(
fuente
Tuve el mismo problema. Sin embargo, a veces CMD no pudo ejecutar mis archivos. Es por eso que creo un temp.bat en mi escritorio, luego este temp.bat ejecutará mi archivo, y luego el archivo temporal se eliminará.
Sé que este es un código más grande, sin embargo funcionó para mí al 100% cuando incluso Runtime.getRuntime (). Exec () falló.
fuente
Lo siguiente funciona bien:
fuente
Este código ejecutará dos comandos.bat que existen en la ruta C: / carpetas / carpeta.
fuente
Para ampliar la respuesta de @ Isha, puede hacer lo siguiente para obtener el resultado devuelto (post-facto, no en tiempo real) del script que se ejecutó:
fuente