通过java代码在gitbash中输入一系列命令

vcirk6k6  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(978)

我试图在gitbash上一个接一个地获取一系列命令。我可以通过代码打开终端,但在那之后没有成功地输入任何东西。例如,这是我尝试的代码

String [] args = new String[] {"C:\\Program Files\\Git\\git-bash.exe"};
                String something="hi how are you doing";

                try {
                    ProcessBuilder p = new ProcessBuilder();
                    var proc = p.command(args).start();
                    var w = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
                    w.write(something);
                } catch (IOException ioException){
                    System.out.println(ioException);
                }

请让我们知道如何通过代码将一系列命令输入gitbash。

4jb9z9bj

4jb9z9bj1#

问题是命令 git-bash.exe 打开终端窗口,但窗口的输入仍然是键盘,因此尝试写入 OutputStream 方法返回的 getOutputStream() ,在课堂上 Process 什么都不做。参考这个问题。
作为替代,我建议使用 ProcessBuilder 执行一系列单独的 git 命令。当您这样做时,您的java代码将获得命令输出。
下面是一个简单的示例,显示 git 版本。

import java.io.IOException;

public class ProcBldT4 {

    public static void main(String[] args) {
        // C:\Program Files\Git\git-bash.exe
        // C:\Program Files\Git\cmd\git.exe
        ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\Git\\cmd\\git.exe", "--version");
        pb.inheritIO();
        try {
            Process proc = pb.start();
            int exitStatus = proc.waitFor();
            System.out.println(exitStatus);
        }
        catch (IOException | InterruptedException x) {
            x.printStackTrace();
        }
    }
}

当您运行上述代码时 git 版本详细信息将写入 System.out .
另外,如果 git 命令失败,错误详细信息将写入 System.err .
你需要为每个人重复上面的代码 git 你需要发出的命令。

相关问题