有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何识别批处理文件是否在java中执行?

我试图用以下代码在java中执行批处理文件

String Extraction="cmd.exe /c start C:\\task\\Extracting.bat "; 
Runtime.getRuntime().exec(Extraction);

System.out.println("Extracted...");

在这里,我想在执行批处理文件之后执行print语句。 但是如果运行上面的代码,它首先打开命令提示符并运行批处理文件,然后在批处理文件运行之前突然执行print语句。帮我解决这个问题


共 (2) 个答案

  1. # 1 楼答案

    还有一件值得一试的事情是:。它等待执行

    String Extraction="cmd.exe /c start C:\\task\\Extracting.bat "; 
    //Runtime.getRuntime().exec(Extraction);
    
    final Process p = new ProcessBuilder("cmd.exe", "/c", "start /WAIT C:\\task\\Extracting.bat").redirectErrorStream(true).start();
    p.waitFor();
    System.out.println("Job done!!");
    
  2. # 2 楼答案

    java在这里的作用是调用cmd,然后由操作系统执行批处理文件中编写的指令:

    您可以检查以下代码:进程句柄将由exec方法返回。 它使用waitFor()等待子进程完成,然后返回退出代码。 当路径出现问题时,它只返回1,否则返回0表示成功

    public class TestMe2 {
    
    public static void main(String[] args) {
        Process p=null;
        String Extraction="cmd.exe /c start C:\\hello.bat "; 
        try {
            p=Runtime.getRuntime().exec(Extraction);
            System.out.println(p.waitFor());
        } catch (Exception er) {
            er.printStackTrace();
        }finally{
        }       
    }
    

    }