我试图通过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);
}
}
运行带有一些参数的脚本的最后一个命令需要输入按下才能完成。如何实现呢?
答案 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