通过Java进行CMD操作

时间:2016-06-10 06:20:42

标签: java cmd

我试图通过JAVA运行一些命令行操作。我的一个命令要求输入按下才能完成。我不知道如何在命令执行过程中通过java传递入口。

    import java.io.BufferedReader;
import java.io.InputStreamReader;

public class CommandLineMethods {
public static String executeCommand(String []command)
{
    StringBuffer output = new StringBuffer();
    Process p;
    try{

                 p=Runtime.getRuntime().exec(command);

        p.waitFor();
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = "";
        while((line=br.readLine())!=null)
        {
            output.append(line + "\n");
        }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    return output.toString();
}
public static void main(String...args)
{   
    String scriptsPath ="C:\\bip_autochain\\win64_x64\\scripts";
    String scriptName="lcm_cli.bat";
    String scriptArguments="lcmproperty C:\\TestNG_Auto\\resources\\LCMBiar_Import.property";

    String []command = {"cmd.exe", "/c"," cd "+scriptsPath+" && "+ scriptName +" -"+scriptArguments};
    String res = executeCommand(command);
    System.out.println(res);

}

}

运行带有一些参数的脚本的最后一个命令需要输入按下才能完成。如何实现呢?

2 个答案:

答案 0 :(得分:0)

看起来你需要创建一个Thread并在其中发送密钥。对于简单的协调,只需让孩子入睡。

答案 1 :(得分:0)

您可以获取OutputStream Process的句柄并以此方式发送命令。可能需要对代码进行一些重构,以便您可以在合适的时间发送命令(可能在InputStream上看到特别的内容时,可能会发生这样的事情:

Process process = Runtime.getRuntime().exec(command)
// ... stuff happens, reading the input maybe
OutputStream out = process.getOutputStream();
out.write("\n");
out.close();

当您与Process进行交互时,有一些注意事项,特别是关于及时读取输出和错误流,以及使用线程以便您可以同时读取它们。看看这篇文章的一些提示:

http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html