使用Java代码使用Runtime / Processbuilder运行多个命令

时间:2017-06-10 17:17:50

标签: java cmd

我试图在这里做一些非常简单的事,但它不起作用。 基本上我有一个程序和一个输入文件坐在某个目录,让我们称之为" programDir"。 我在Eclipse中编写了一个插件,它将调用该程序并在输入文件上运行它。

基本上必须完成两个步骤:1)cd to programDir 2)通过调用" idp input.txt"

运行程序

我已在cmd中手动完成此操作,它按预期工作。但是在Java中,我无法使用它。我尝试了两种方法:

Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("cmd.exe /c cd \""+programDir+"\" & \"idp input.txt\"");

这里我从errorStream中得到以下内容:" idp output.txt"不被识别为实习生或外部命令,程序或批处理文件

我不确定为什么。我遗漏了命令的第二部分,以确保我在正确的位置。当我添加" start"时,会弹出一个控制台窗口,它位于programDir文件夹中。如果我然后手动输入" idp input.txt"我得到了预期的行为。

第二种方法:

在谷歌搜索主题之后,我也使用了ProcessBuilder。我尝试了这段简单的代码:

    String[] command = {"CMD", "/C", "idp input.txt"};
    ProcessBuilder pb = new ProcessBuilder(command);
    pb.directory(new File(programDir));
    Process proc = pb.start();

现在没有任何反应,程序也没有终止。 再次,如果我添加"开始"作为"命令"中的参数之一,控制台窗口会弹出正确的位置,如果我然后手动输入" idp input.txt",它就可以工作。所以我不知道代码为什么不起作用。

一件有趣的事:idp.bat文件调用kbs.exe进程。当我运行第二段代码时,我的任务管理器中没有出现kbs.exe。但是,一旦我终止该程序,它就会暂时出现。这是否意味着我的代码卡在某个地方的某个循环中?

任何帮助表示赞赏!

0 个答案:

没有答案