2016-10-03 3 views
0

Мне нужно выполнить файл .cmd, который находится на другой машине. Я могу получить доступ к файловой системе из этой машины, как: \\IP\Location\File.cmdВыполнение файла bat на другой машине и получение вывода

код у меня есть от: http://omtlab.com/java-how-to-run-exe-file-and-batch-file-using-java-program/

import java.io.ByteArrayOutputStream; 
import java.io.InputStream; 

public class GetResponseMain { 
    //This is Example that display how to get response using java 
    public static void main(String args[]) 
    { 
     String filePath = "\\\\255.255.255.0\\Scripts\\ClearCache.cmd"; 
     try { 

      Process p = Runtime.getRuntime().exec(filePath); 
      p.waitFor(); 
      InputStream in = p.getInputStream(); 
      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

      int c = -1; 
      while((c = in.read()) != -1) 
      { 
       baos.write(c); 
      } 

      String response = new String(baos.toByteArray()); 
      System.out.println("Response: "+response); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 
} 

Этот код должен был напечатать вывод. Но он показывает содержимое файла .cmd.

Я думаю, что вместо выполнения сценария на этой машине. Он выполняет его локально. Итак, как я могу это исправить?

+1

Ну, в мире командного файла мы обычно используем утилиту Microsoft PSEXEC для выполнения кода на удаленном компьютере. – Squashman

+0

@Squashman, пожалуйста, объясните немного? – Nivedita

+2

Я ничего не знаю о java, поэтому я не смог бы объяснить, как заставить его работать в java. Я просто знаю, что если мне нужно выполнить пакетный файл на удаленном компьютере, я использую psexec. https://technet.microsoft.com/en-us/sysinternals/pxexec.aspx – Squashman

ответ

0

Я думаю, что первая проблема заключается в следующем: может ли быть запущен на локальной машине File.cmd? Из-за отсутствия подходящего программного обеспечения на локальной машине (что зависит от File.cmd), он может не работать. Если он дает ошибки при запуске в командной строке, он также будет давать те же ошибки при запуске через java. Сделать его пригодным для работы на локальном компьютере может быть долгой задачей, в зависимости от того, насколько сложна File.cmd и какое программное обеспечение необходимо установить на вашем локальном компьютере, чтобы оно работало.

С другой стороны, если вы хотите, чтобы запустить его на самой удаленной машине (в то время как вы сидите на терминале локальной машине), вы можете использовать PsExec или wmic как указал другие в комментариях.

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