2

我正在使用 javaProcess类来执行一些批处理文件。我正在使用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批处理文件中的命令。但是,我的问题是我无法更改正在使用的任何批处理文件,也无法添加批处理文件来调用另一个批处理,如提供的链接中所示。

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

4

1 回答 1

1

正如 assylias 所说,您只需要打开一个输出流并将命令发送到脚本。这将帮助您进行停顿。

向控制台应用程序发送命令?

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

于 2013-07-17T17:46:34.887 回答