2014-02-07 2 views
2

Как выполнить .bat или .exe в моей java-программе, находящейся в подпапке в основной папке, содержащей мою java-программу.Выполнение файла bat в программе Java

Runtime.getRuntime().exec("cmd /c start example.bat"); 

Этот код работает отлично, когда .bat находится в той же папке, что и программа java. Но если файлы моей программы .java и .class были организованы в пакете (и байт был бы в отдельной папке), как бы я назвал эту программу летучей мыши?

+0

Прочитайте (и внесите) * все * рекомендации [Когда Runtime.exec() не будет] (http://www.javaworld.com/jw-12-2000/jw-1229-traps.html) , Это может решить проблему. Если нет, он должен предоставить дополнительную информацию о причине отказа. Затем проигнорируйте, что он ссылается на 'exec' и создает' Process' с помощью 'ProcessBuilder'. Также разбивайте 'String arg' на' String [] args' для учета аргументов, которые сами содержат пробелы. –

ответ

1

Если файл .bat находится в другой папке, вы должны передать полный путь к cmd.exe. Кроме того, чтобы получить правильное цитирование, вы должны использовать метод, который принимает массив в качестве аргумента:

String[] cmd = {"cmd", "/c", "start", path}; 
Runtime.getRuntime().exec(cmd); 

Если вы знаете расположение .bat файла относительно вашего .jar файл, вы можете найти его с помощью свойства объекта класса. См., Например, How to get the path of a running JAR file?

0

Возможно, это не возможно в вашем случае, но что, если вы добавили местоположение командного файла в свой путь выполнения?

0

Вы можете использовать полный абсолютный путь к example.bat или относительный путь из вашего рабочего каталога.