【问题标题】:run .bat file from other systems java code从其他系统 java 代码运行 .bat 文件
【发布时间】:2015-10-08 10:47:37
【问题描述】:

我想通过eclipse java运行其他系统中的bat文件。下面是bat文件在我们系统中运行的代码。

import java.io.IOException;
import java.io.InputStream;

public class batchFile_execution_throught_java {

public static void main(String[] args) {
     Runtime runtime = Runtime.getRuntime();
     try
     {

     Process p1 = runtime.exec("cmd /c C:\\Users\\root\\Desktop\\sample.bat");
     InputStream is = p1.getInputStream();
     int i = 0;
     while( (i = is.read() ) != -1)
     {
     System.out.print((char)i);
     }

     }
     catch(IOException ioException)
     {
     System.out.println(ioException.getMessage() );
     }
}

}

【问题讨论】:

  • 你不能在windows配置中创建一个共享文件夹来指向远程计算机吗?
  • 我需要在其他系统中运行 bat 文件并在我的 eclipse 控制台中输出
  • 那没有回答我的问题... :) 请检查我的答案以获得进一步的解释
  • 另请注意,您处理 exec() 调用及其流的实现可能会无限期挂起 - 请参阅 javaworld.com/article/2071275/core-java/…

标签: java eclipse batch-file


【解决方案1】:

我的第一次尝试是在 windows 中创建一个共享文件夹,这样你就可以像现在一样访问远程文件:

 Process p1 = runtime.exec("cmd /c \\alias_of_folder\\sample.bat");

如果创建共享文件夹不是一个选项,您需要使用您的 Java 应用程序打开与另一台计算机的连接。

  • OpenSSH 网站提供的信息将在 Java 中为您提供 ssh 支持。
  • 还要检查JSch,它是examples

更新来自this answer

您还可以将JschExpect4j 结合使用,这样可以更好地控制您要执行的命令 (nice example here)。

【讨论】:

  • 请注意,只有在运行 Java 应用程序的用户帐户存在具有该名称的驱动器映射时,alias_of_folder 才会起作用。如果您的 Java 代码作为 Windows 服务运行(例如:在 Tomcat 中运行),则情况并非如此。因此,最好使用 UNC 路径。
  • @Dragos,它很容易在 windows start 中自动执行操作...关于 tomcat... 我知道,但似乎与 OP 无关
  • 我看不到您给定的示例将如何访问任何远程内容?看起来它只是访问一些本地批处理文件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多