有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从java进程中跳过批处理中的暂停命令

我正在使用java Process类来执行一些批处理文件。我正在使用ProcessBuilder创建流程,这部分运行良好。我的问题是处理我正在运行的批处理文件中的pause命令。当前pause命令正在挂起批处理的执行,但我需要批处理完成,以便恢复挂起的操作。目前,我正在启动一个批处理,其代码相当于:

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;


public class BatchEnter {

    public static void main(String[] args) throws Exception {
        List<String> params = Arrays.asList(new String[]{"cmd", "/C", "C:/test/test.bat"});
        ProcessBuilder builder = new ProcessBuilder(params);
        builder.directory(new File("C:/test")).redirectErrorStream(true);
        Process p = builder.start();

        BufferedReader wr = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = "";
        while((line = wr.readLine())!=null){
            System.out.println(line);
        }

        p.waitFor();
    }
}

我知道我们可以使用这个"hack"从批处理文件中跳过pause命令。但是,我的问题是,我无法更改正在使用的任何批处理文件,也无法添加一个批处理文件来调用提供的链接中的另一个批处理

我想知道有没有办法指定进程跳过暂停命令


共 (1) 个答案

  1. # 1 楼答案

    正如assylias所说,您只需要打开一个输出流并向脚本发送命令。这将有助于你暂停

    Sending commands to a console application?

    有很多例子。我以前做过的一件事就是一次只读一行。如果行字符串与提示请求匹配,则在出现这种情况时发送换行符。这样,您就不必担心哪些脚本有提示或提示的频率