2013-02-28 2 views
0

У меня есть папка с именем , который содержит .bat файл: a.bat. Если бы я хотел написать .bat файл, который я мог бы написать:Выполнить «.bat» файл, который содержит несколько строк из Java

cd A/ 
call a.bat 

и я хотел бы видеть результаты, но если я хочу, чтобы запустить его из Java у меня есть проблемы.

Я пытаюсь сделать это:

String command = "cmd.exe /c start cd A/\ncall a.bat"; 
try { 
    Runtime.getRuntime().exec(command); 
} catch (IOException e) { } 

Я пытался заменить \n с ; и \r и &&, но это не сработало. (Он не признает существование двух строк).

Как я могу запустить несколько строк от .bat от Java?

+0

Посмотреть этот для некоторых хороших вариантов: HTTP: // stackoverflow.com/questions/9680968/runtime-getruntime-exec-execute-two-lines –

+0

в соответствии с простым временным решением, вы можете поместить эти две строки в какой-нибудь другой пакетный файл и выполнить это только –

+0

Я знаю это, но вся суть моей программы - инкапсулировать этот файл. Поэтому создание файла '.bat' для меня не является вариантом. – Maroun

ответ

1

Вы можете установить рабочий каталог для процесса со стороны Java в точке, где вы икру cmd, а не нуждаясь в cd команду:

ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", "a.bat"); 
pb.directory(new File("path\\to\\A")); 
Process p = pb.start(); 
+0

Есть ли способ открыть окно «CMD», чтобы увидеть результаты? – Maroun

+0

@MarounMaroun может быть, используя 'start', т. Е.' New ProcessBuilder («cmd.exe», «/ c», «start», «a.bat») '? Я не пользователь Windows, поэтому я не знаю точно. –

+0

Я пробовал, но он не открывал 'CMD' .. – Maroun

Смежные вопросы