繁体   English   中英

如何在CMD中打开程序并与Java进行交互

[英]How to open a program in CMD and interact with it with Java

我能够打开一些程序,该程序可以从cmd获取指令以执行某些操作,例如使用某些参数打开文件,检查其是否准备好,等等。

这就是我通过Java打开文件的方式。

final String location = "C:\\Program";
final File dir = new File(location);
String cmd = "cmd.exe /c start my-program.exe";         
Process process = Runtime.getRuntime().exec(cmd, null , dir);

我现在如何与之交互 ,发送“ check_status”或“ do_some_stuff”之类的命令并将其输出到Java。

如果我尝试这样做:

String [] cmd = {"cmd.exe /c start my-program.exe", "do_stuff"};
Process process = Runtime.getRuntime().exec(cmd, null , dir);

我收到错误消息:“无法运行程序“ cmd.exe / c start my-program.exe.exe”(在目录“ C:\\ Program”中):CreateProcess错误= 2,系统找不到指定的文件”

但是当我发送单个String作为参数时,它确实会找到文件。

我了解可以通过以下方式将其输出到Java:

java.io.InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;

while ((line = br.readLine()) != null) {
System.out.println(line);   
}

编辑:通过使用getOutputStream解决。

Writer w = new OutputStreamWriter(process.getOutputStream());
        w.write("custom_command");
        w.close();

我使用standalone.bat文件(类似.exe文件)启动了Wildfly服务器

public static void main(String[] args) throws IOException {
    ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe", "/c", "cd D:\\Users\\turack\\Downloads\\wildfly-16.0.0.Final\\bin\\ && standalone.bat");
    processBuilder.redirectErrorStream(true);
    Process process = processBuilder.start();
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String line;
    while (true) {
        line = bufferedReader.readLine();
        if (line == null) { break; }
        System.out.println(line);
    }
    bufferedReader.close();
}

通过使用getOutputStream解决。

Writer w = new OutputStreamWriter(process.getOutputStream());
        w.write("custom_command");
        w.close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM