从java进程批量跳过暂停命令

时间:2013-07-17 15:24:22

标签: java batch-file

我正在使用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 个答案:

答案 0 :(得分:1)

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

Sending commands to a console application?

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