2016-10-03 65 views
0

我需要执行位于不同机器上的.cmd文件。我可以访问文件系统,机器,如:\\IP\Location\File.cmd在不同的机器上执行bat文件并获取输出

我的代码为:​​

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

那么在批处理文件的世界里,我们通常使用微软的PSEXEC工具来在远程计算机上执行代码。 – Squashman

+0

@Squashman你能解释一下吗? – Nivedita

+2

我对java一无所知,所以我无法解释如何使它在java中工作。我只知道如果我需要在远程计算机上执行批处理文件,我使用psexec。 https://technet.microsoft.com/en-us/sysinternals/pxexec.aspx – Squashman

回答

0

我认为第一个问题是:File.cmd可以在本地机器上运行吗?由于本地计算机上缺少合适的软件(即依赖于该软件),因此可能无法运行。如果它在命令行上运行时发生错误,当它通过java运行时,它也会出现相同的错误。适合在本地机器上运行可能是一项长期任务,具体取决于复杂程度以及需要在本地计算机上安装哪些软件才能使其工作。

在另一方面,如果你想远程机器本身上运行(而你坐在本地计算机的终端),你可以使用PsExecwmic如指出其他人在评论。

相关问题