相关文章推荐
鬼畜的太阳  ·  第一次使用VS ...·  8 月前    · 
会搭讪的大葱  ·  Office 365 SMTP ...·  9 月前    · 
文质彬彬的领结  ·  Unity AR Ⅰ - 知乎·  1 年前    · 

通过使用开始,您将askcmd.exe在后台启动批处理文件:

Process p = Runtime.getRuntime().exec("cmd /c start " + path + "\\RunFromCode.bat");

所以,从Java(cmd.exe)启动的进程在后台进程完成之前返回。

删除start命令在前台运行批处理文件 – 那么waitFor()将等待批处理文件完成:

Process p = Runtime.getRuntime().exec("cmd /c " + path + "\\RunFromCode.bat");

根据OP,重要的是让控制台窗口可用 – 这可以通过添加/ wait参数来完成,如@Noofiz所建议的。以下SSCCE为我工作:

public class Command {

public static void main(String[] args) throws java.io.IOException, InterruptedException {

String path = "C:\\Users\\andreas";

Process p = Runtime.getRuntime().exec("cmd /c start /wait " + path + "\\RunFromCode.bat");

System.out.println("Waiting for batch file ...");

p.waitFor();

System.out.println("Batch file done.");

如果RunFromCode.bat执行EXIT命令,则命令窗口将自动关闭。否则,命令窗口保持打开,直到您使用EXIT显式退出它 – 在这两种情况下,java进程都在等待窗口关闭。

通过使用开始,您将askcmd.exe在后台启动批处理文件:Process p = Runtime.getRuntime().exec("cmd /c start " + path + "\\RunFromCode.bat");所以,从Java(cmd.exe)启动的进程在后台进程完成之前返回。删除start命令在前台运行批处理文件 – 那么waitFor()将等待批处理文件完成:Process ...
Runtime .get Runtime . exec ()会使用一独立的process  a处理参数命令,并且返回一个管理该process a的process。 程序主 进程 等待 process一定的时间,但是时间很少,可能process根本无法 完成 工作就结束了。 因此,针对使用较长时间做工作的process,就需要调用 wait For方法。 该方法会引起当前Thread 等待 ,直到process中断。
log.info("同步整个资源目录"); // 同步整个资源目录 List<Process> processes = new LinkedList<Process>(); //获取资源服务器 List<ResourceServer> servers = getResourceServer(); for (ResourceServer server :...
原文地址: http://yearsaaaa123789.iteye.com/blog/1404865 我是在写一段用 java 执行文件夹拷贝的时候遇到的这个问题,一开始想的是用递归copy的方式去做,代码如下: //copy文件夹 public static boolean copyDirectory(String sourcePath,String targetPath) throws E
最近在 java 中调用perl程序,由于perl中使用斯坦福分词器,有很多控制台输出,导致一直阻塞在process. wait for( ),只有强制终止 java 程序后,结果文件才会输出。根据下面两个博客内容成功解决。 用 Java 编写应用时, 1. Runtime .get Runtime ()可以取得当前JVM的运行时环境,这也是在 Java 中唯一一个得到运行时环境的方法 2. Runtime 中的exit方法是退出JVM exec (String[] cmdarray, String[] envp, File dir) Exec utes the specified command and arguments in a separate process with the specified environment and working directory. 最近在开发一个系统时,需求是 Java 调用Python脚本,这里我使用 Process process = Runtime .get Runtime (). exec () 来调用,脚本用命令行能完整运行,但用 Java 调却一直转圈圈,等很久也不见结束.文章为记录… process参考 wait for挂起解析 1.使用process调用py脚本 public static ResultVO pyInvoke(String[] arguments) throws Exception { 如果要在 Java 中调用shell脚本时,可以使用 Runtime . exec 或ProcessBuilder.start。它们都会返回一个Process对象,通过这个Process可以对获取脚本执行的输出,然后在 Java 中进行相应处理。例如,下面的代码: Process process = Runtime .get Runtime (). exec (cmd);
` Runtime . exec ()` 方法是 Java 中用于执行操作系统命令的方法。它允许 Java 应用程序启动另一个 进程 并与其进行通信。 ` Runtime . exec ()` 方法有多种重载形式,它们允许您指定要执行的命令及其参数,并指定如何处理 进程 的输出和错误流。 例如,以下代码将在 Windows 系统上执行 `dir` 命令,并将命令的输出打印到控制台: ``` java Process process = Runtime .get Runtime (). exec ("cmd /c dir"); try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); 在上面的代码中,` Runtime .get Runtime (). exec ("cmd /c dir")` 会执行一个新的 进程 ,该 进程 将运行 `cmd /c dir` 命令。使用 `BufferedReader` 从 进程 的输出流中读取数据,并将其打印到控制台上。注意,在读取完输出流之后,我们需要调用 `Process. wait For()` 方法 等待 进程 完成 其执行。