Проблема с Java при запуске файла .bat - PullRequest
2 голосов
/ 30 июля 2009

Я пытаюсь запустить два файла bat из приложения Java. Я использую:

try
{
  Runtime rt = Runtime.getRuntime();
  Process proc = rt.exec(fullCommand);
  InputStream stderr = proc.getErrorStream();
  InputStreamReader isr = new InputStreamReader(stderr);
  BufferedReader br = new BufferedReader(isr);

  int exitVal = proc.waitFor();
  System.out.println("Process exitValue: " + exitVal);

  System.out.println("Working...");
} //End try

catch (Throwable t)
{
  t.printStackTrace();
} //End catch

} // Конечный метод

Файл bat вызывает другой файл bat. Кажется, он никогда не выходит и не возвращает управление исходному файлу bat.

от 1.bat

set zzname=%1
zzlookup.bat %zzname%

Другой bat-файл запускает несколько команд и затем должен завершиться. Нужно ли делать что-то особенное с частью времени выполнения?

Заранее спасибо, Dustin

Ответы [ 3 ]

4 голосов
/ 31 июля 2009

В дополнение к приведенному выше совету, я не думаю, что Runtime.exec позволяет напрямую запускать файлы .bat. Попробуйте сначала поставить перед командой префикс «cmd \ c».

См. http://ant.apache.org/manual/Tasks/exec.html

3 голосов
/ 30 июля 2009

Чтобы вызвать один пакетный файл из другого и все же вернуться к оригиналу, вам нужно

call zzlookup.bat %zzname%

В противном случае, как только zzlookup.bat завершится, процесс остановится.

Например:

withcall.bat

@echo Before
@call other.bat
@echo After

direct.bat:

@echo Before
@other.bat
@echo After

other.bat

@echo Other

Выход:

c:\Users\Jon\Test>withcall
Before
Other
After

c:\Users\Jon\Test>direct
Before
Other
1 голос
/ 31 июля 2009

Если пакетный файл генерирует выходные данные, вам необходимо слить потоки, представляющие стандартный вывод и вывод ошибок.

Уже есть рабочие примеры здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...