Pregunta

Cuando ejecuto el archivo por lotes directamente en DOS, todo funciona como se esperaba. Pero cuando ejecuto el archivo por lotes de ejecución de Java, se ejecutará sólo los comandos que llaman a los archivos jar (es decir. Invocar la JVM). Lo hace no ejecutar comandos DOS nativos.

Uno de los problemas es que no tengo ninguna consola saber por qué ocurre esto. Me pregunto si se trata de un problema de permisos, pero no tengo ni idea. Alguien por ahí ver esto antes?

El código Java se utiliza es como la siguiente:

Runtime.getRuntime () exec ( "c: \ targetFolder \ miLote.bat."); // (Editado aquí por simplicidad).


El archivo por lotes se ve algo como esto (señalando que he simplificado): I
miLote.bat:

  llamar java myJar.jar bla bla --- sí
  copia outputFile.out outputFile.bak --- NO
  mkdir testdir --- NO
  llamar java myJar.jar bla bla --- sí
  llamar someOther.bat --- NO

Los --- sí las líneas funcionan bien y ver los resultados esperados
Los --- no hay líneas hacen no plazo, pero no tengo idea de por qué no b / c no hay consola de decirme.

Gracias por la ayuda !! Mike

¿Fue útil?

Solución

Se tiene que ejecutar el procesador de comandos de Windows (la cáscara), lo que le da el archivo por lotes como un argumento.

Runtime.getRuntime().exec( "cmd.exe /C c:\\targetFolder\\myBatch.bat" );

Otros consejos

El hecho de que el segundo Java llama ejecuta indica que todas sus líneas aún NO están ejecutando, pero simplemente no mostrar ninguna salida. ¿Ha intentado encender eco en via

@ECHO EN

en su primera línea?

En segundo lugar, el problema es probablemente el directorio de trabajo mal. Especificar el directorio de trabajo al igual que

Runtime.getRuntime().exec("c:\targetFolder\myBatch.bat",null,"c:\targetFolder"); 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top