1

Javaでオペレーティングシステムコマンドを実行してから、その戻り値を出力したいと思います。このような:

これが私が試していることです...

String location_of_my_exe_and_some_parameters = "c:\\blabla.exe /hello -hi";
Runtime.getRuntime().exec(location_of_my_exe_and_some_parameters);

ランタイム...行の先頭にSystem.out.print()を配置しようとしましたが、失敗しました。どうやら、オブジェクトをgetRuntime()返すからRuntimeです。

ここで、問題は、コマンドラインで「blabla.exe / hello -hi」コマンドを実行すると、「コマンドを実行しました、万歳!」のような結果が得られることです。しかし、Javaでは何も得られませんでした。

Runtime戻り値をオブジェクト、オブジェクトに入れてみましたObject。しかし、両方とも失敗しました。どうすればこれを達成できますか?

問題は解決しました-これが私の解決策です

Process process = new ProcessBuilder(location, args).start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;

while ((line = br.readLine()) != null) {
    System.out.println(line);
}
4

3 に答える 3

1

オブジェクトをRuntime.exec(...)返すことに注意してください。Processこのオブジェクトを使用して、入力ストリームをキャプチャし、標準出力に出力するものをすべて取得できます。

Process p = Runtime.getRuntime().exec(location_of_my_exe_and_some_parameters);
InputStream is = p.getInputStream();

// read process output from is
于 2012-06-07T12:44:08.000 に答える
1

これを使用して、コマンドの出力をキャプチャできます。

 Runtime rt = Runtime.getRuntime();
 Process pr = rt.exec(command);
 BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
 String line=null;

 while((line=input.readLine()) != null) {
    log.info(line);
 }
  //This will wait for the return code of the process
 int exitVal = pr.waitFor();
于 2012-06-07T12:47:35.787 に答える
0

ランタイムの代わりにProcessBuilderを使用します。

好き:

Process process = new ProcessBuilder("c:\\blabla.exe","param1","param2").start();

答え:

Process process = new ProcessBuilder("c:\\blabla.exe","/hello","-hi").start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;

System.out.printf("Output of running %s is:", Arrays.toString(args));
于 2012-06-07T12:47:34.673 に答える