Aiuto su Interface ExecutorService

di il
2 risposte

Aiuto su Interface ExecutorService

Ciao a tutti
sto cercando di eseguire da Java un .bat e di valutare il risultato. Il pezzo di codice è il seguente. Visto che il bat mi restituisce l'errore level e quindi un intero per favore mi dite dove sto sbagliando? Con questo pezzo di codice per adesso io non riesco a "trappare" la condizione di %ERRORLEVEL% diversa da 0 e quindi errore. Mi potete aiutatre per favore ? Sono un neofita.

Future<Integer> prc = null;
if(type.equalsIgnoreCase("BAT")){
prc = service.submit(new ProcessTask(processName, new String[] { "cmd", "/c", "start", path }));
} else{
prc = service.submit(new ProcessTask(processName, new String[] { "cmd", "/c", path }));
log.debug(processName + " - Result: " + prc.get());
}
if ((result = prc.get().intValue()) == 0) {
log.info("End " + processName + " - Result: " + prc.get());
return result;


Grazie e tutti

2 Risposte

  • Re: Aiuto su Interface ExecutorService

    Cosa è/fa ProcessTask? Perché per eseguire dei batch (.bat) di per sé non serve il ExecutorService.

    EDIT:
    ah, e c'è anche un "bel" inghippo. Se esegui cmd /c start blabla, la shell (cmd) lancia il batch in una sua finestra ma poi (la shell) termina SUBITO (e molto probabilmente prima della terminazione del batch). Quindi in questo caso NON puoi avere il exit code del batch.
  • Re: Aiuto su Interface ExecutorService

    Ciao andbin
    ProcessTask è il processo che dovrebbe essere lanciato. Io visto che sono newbie mi sono trovato questo codice da testare. Intanto il batch lanciato potrebbe durare o subito o stare parecchio tempo. Secondo te quale sarebbe il codice per poter lanciare un .bat e testare l'error code ? Per adesso io ho creato un test.bat per la simulazione dove setta la variabile %errorlevel% per ritornare il risultato dell'operazione eseguita all'interno del test.bat
    Purtroppo non conosco le logiche sotto la questa classe.
Devi accedere o registrarti per scrivere nel forum
2 risposte