当前位置: 首页 > 面试题库 >

从Java执行命令并等待命令完成

刘永望
2023-03-14
问题内容

在我的Java程序中,我创建一个执行命令以运行批处理文件的过程,如下所示:

try {
        File tempFile = new File("C:/Users/Public/temp.cmd");
        tempFile.createNewFile();
        tempFile.deleteOnExit();


        setContents(tempFile, recipe.getText()); //Writes some user input to file
        String cmd = "cmd /c start " + tempFile.getPath();


        Process p = Runtime.getRuntime().exec(cmd);


        int exitVal = p.waitFor();

        refreshActionPerformed(evt);

    } catch (InterruptedException ex) {
        Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) {
        Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
    }

现在,我想发生的是该命令

refreshActionPerformed(evt);

仅在我调用的批处理文件执行完毕后运行。但是现在,它会在命令提示符打开后立即运行。

我该如何解决?


问题答案:

我设法在其他地方找到答案。要保持初始过程打开,直到批处理文件完成,您需要的是“ / wait”

Process p = Runtime.getRuntime().exec("cmd /C start /wait filepath.bat");
int exitVal = p.waitFor();


 类似资料:
  • 问题内容: 我有一个脚本,可通过popen shell命令启动。问题在于脚本不会等到该popen命令完成后才继续运行。 如何告诉我的Python脚本等待shell命令完成? 问题答案: 根据您想如何使用脚本,您有两种选择。如果您希望命令阻塞并且在执行过程中不执行任何操作,则可以使用。 如果您想在执行过程中执行操作或将内容输入,可以在调用后使用。 如文档中所述,可能会死锁,因此建议进行通信。

  • 问题内容: 我有一个bash脚本文件,正在shell中使用source命令调用它,并且正在设置许多环境变量。然后,我可以使用环境变量正在设置的所有工具。 现在,我想使用以下方法在Java中执行相同的操作: 我知道源是内部命令,不能从Java调用它。 还有其他方法可以通过java在该文件中设置环境变量,以便以后可以在我的代码中使用它们来调用其他命令吗? 先感谢您! 问题答案: 尝试执行类似的操作,在

  • 问题内容: 我正在尝试从用户读取一个文件,其中每一行都是一个命令,然后运行它(可以假定命令是合法的),但是当我给出类似的命令时,出现运行时异常错误: 线程“主”中的异常java.io.IOException:无法运行程序“ echo”:CreateProcess错误= 2,系统找不到指定的文件 我正在尝试运行以下命令: 在哪里。但这确实适用于类似的命令,所以看来我得到的运行时就像“运行”窗口而不是

  • 问题内容: 我正在尝试从GNU / Linux平台上的Java应用程序执行shell命令。问题是,尽管它可以从bash成功运行,但调用另一个Java应用程序的脚本永远不会结束。我试图调试它: 我尝试使用:ProcessBuilder(); 和Runtime.getRuntime()。exec(cmd); 看起来它正在等待完成。有任何想法吗? 谢谢,Laurențiu 问题答案: 您是否正在处理标准

  • 我正在使用以下代码执行一个SH文件Linux 此代码工作,但是我不能使用SH文件中的屏幕命令从Java执行时,我得到这个错误 必须连接到端子。 那么,可以将java“连接”到终端吗?当我通过SSH连接时,我想也能看到这个屏幕,所以我认为它必须连接到终端,当你通过SSH连接到服务器时,终端会显示出来。

  • 问题内容: 情况如下: 我有一个泊坞窗容器(jenkins)。我已经将套接字安装到容器中,以便可以在jenkins容器中执行docker命令。 手动操作,一切都在容器中进行。但是,当詹金斯执行作业时,它不会“等待” 命令运行完成。 下面是Jenkinsfile的摘录。短期命令可以正确运行,并输出环境变量。仅运行下一个命令(python),然后Jenkins立即继续前进,而无需等待完成。Jenkin