lunedì 18 novembre 2013

Java invocare bat file passando parametri

Supponiamo di voler invocare un semplic bat di questo tipo:

echo %1 %2
echo Ciao %1 %2 > pippo.txt

Quindi un bat che prende in input dei parametri e li scrive su un file (creandolo ex novo), in un path RELATIVO rispetto alla posizione del path.

Via java è possibile utilizzare la seguente istruzione:

Runtime.getRuntime().exec("cmd /c start  C:\\excel\\test.bat ciao sam");


E in effetti funziona ma il file non viene creato nella directory relativa c:excel bensì in quella dove stiamo eseguendo il nostro pgm Java.

Non sono riuscito a capire come fare (sicuramente ci deve essere un modo) per fare in modo che non scrivesse il file nel percorso relativo al pgm Java ma inutilmente.
Ho provato anche a fare una cosa del tipo:

System.setProperty("user.dir","c:\\excel");

ma niente da fare.

Per risolvere ho utilizzato la libreria commons-exec-1.1.jar.

DefaultExecutor df=new DefaultExecutor();
df.setWorkingDirectory(new File("c:\\excel"));
CommandLine cl=new CommandLine("c:\\excel\\test.bat");
cl.addArgument("uno");
cl.addArgument("due");
df.execute(cl)

Si noti che se si commenta il rigo 2 (il setWorkingDirectory) torniamo alla situazione precedente, mentre se non si specifica nel CommandLine il percorso assoluto e si mette quello relativo comunque non funziona (nonostante abbia settata la working directory) e da proprio errore lamentando la mancanza del file bat.

Nessun commento:

Posta un commento