Social Icons

.

среда, 26 февраля 2014 г.

Запуск bat файла из JAVA программы



Собственно вызов не сложный.

public static void runBat() {
 try {
  Runtime.getRuntime().exec("cmd /c start c:/ww.bat ");
 } catch (IOException e) { 
  System.out.println("IOException: " + e.getMessage() ); 
 }
}

Следует помнить о правах процесса, который вызывает java машину. Например, если данный вызов сделать из сервера приложений, который запущен как сервис операционной системы, который, в свою очередь, не имеет по определению окон, то невозможность запуска из такого батника notepad.exe выглядит нормально.

Еще один пример, включающий перенаправление вывода информации в журнал

/**
 * Выполнить команду операционной системы
 * @param szCommand - сама команда
 * @param szEncoding - кодировка, в которой выводится сообщение в консоль ОС
 * @return истина, если не упали в процессе выполнения.
 */
private boolean runBat(String szCommand, String szEncoding) {
 boolean bResult = true;
 BufferedReader in = null;
 BufferedReader err = null;
 try {
  Process p = Runtime.getRuntime().exec( szCommand );
  in = new BufferedReader(new InputStreamReader(p.getInputStream(), szEncoding) );
  err = new BufferedReader(new InputStreamReader(p.getErrorStream(), szEncoding) );
  
  String szLine = null;
  StringBuilder theBuffer = new StringBuilder();
  theBuffer.append("\nExecute runtime: ");
  theBuffer.append(szCommand);
  theBuffer.append( "\nOutput message is: " );
  while((szLine = in.readLine()) != null) theBuffer.append( szLine + " " );
  theBuffer.append( "\nError message is: " );
  while((szLine = err.readLine()) != null) theBuffer.append( szLine + " " );
  
  log().info( theBuffer.toString() );
 }
 catch (Exception e) {
  bResult = false;
  log().error("Can't execute " + szCommand + " Exception: " + e.getMessage() ); 
 }
 finally{
  try{if(in != null) in.close();}catch(Exception Ex){;}
  try{if(err != null) err.close();}catch(Exception Ex){;}
 }
 return bResult;
}

Комментариев нет:

Отправить комментарий

 

Так говорил Учитель:

У хорошо написанной программы есть свой собственный рай, у плохо написанной — свой собственный ад.

Russian Developer

Взгляд его светел, усилия праведны, старания бесплодны, дело безнадежно ...