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();
    }
}

この「ハック」pauseを使用して、バッチ ファイルからコマンドをスキップできることは承知しています。しかし、私の問題は、使用しているバッチ ファイルを変更できず、提供されたリンクのようにバッチ ファイルを追加して別のバッチを呼び出すことができないことです。

一時停止コマンドをスキップするようにプロセスに指定する方法はありますか?

4

1 に答える 1

1

assylias が言ったように、出力ストリームを開いてコマンドをスクリプトに送信するだけです。それは一時停止に役立ちます。

コンソール アプリケーションにコマンドを送信しますか?

例があります。私が以前に行ったことの 1 つは、一度に 1 行ずつ読むことです。ライン ストリングがプロンプト要求と一致する場合は、それが発生するたびに改行を送信します。そうすれば、どのスクリプトにプロンプ​​トが表示されるか、またはその頻度について心配する必要がなくなります。

于 2013-07-17T17:46:34.887 に答える