Camarada, eu fiz alguns testes aqui e consegui o seguinte.
Classe que chama:
package main;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
File f = new File(".");//local onde será criado o prompt
Process proc = null;
try {
proc = Runtime.getRuntime().exec("cmd", null, f);
} catch (IOException e) {
e.printStackTrace();
}
if (proc != null) {
BufferedReader in = new BufferedReader(new InputStreamReader(
proc.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(proc.getOutputStream())), true);
out.println("cd diretorio");//acessando o diretório que preciso, caso esteja abaixo, utilize cd .. até chegar no nível de acesso ao outro
out.println("exec");//nome do .bat
try {
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
proc.waitFor();
in.close();
out.close();
proc.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
}
E a classe que é executada
package main;
import java.io.File;
import javax.swing.JOptionPane;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
File f = new File(".");
String caminho = f.getAbsolutePath();
JOptionPane.showMessageDialog(null, caminho);
}
}
Fiz o seguinte, criei um jar com a primeira, em meus documentos. Depois, criei a pasta “diretorio” e nela coloquei o jar com a segunda classe e o bat chamado exec.bat, que só executa
Fui ao prompt de comando, executei, dentro de meus documentos
E aguardei, a saída trouxe o JOptionPane, com o diretório correto.