0

Java プログラム内からバッチ ファイルを実行しようとしていますが、奇妙な動作が発生します。

Process p = Runtime.getRuntime().exec("cmd /c start temp.bat");

これは通常問題なく実行されますが、バッチ ファイル内のパイプ コマンドが機能しないことがわかりました。助言がありますか?

4

3 に答える 3

1

CommonsExec を使用することをお勧めします。これにより、作業が大幅に楽になります。次のようなコードを使用できます (テストされていません)。

CommandLine cmdLine = new CommandLine("ping");
cmdLine.addArgument( host );

ByteArrayOutputStream stdout = new ByteArrayOutputStream();
PumpStreamHandler     psh    = new PumpStreamHandler( stdout );

DefaultExecutor executor = new DefaultExecutor(); 
executor.setStreamHandler( psh );

try {
  executor.execute( cmdLine );
} catch ( Exception e ) {
}

System.out.println( stdout.toString() );
于 2011-06-21T22:31:34.633 に答える
0

Processオブジェクトを使用して、getOutputStream()およびgetInputStream()を使用して、プロセスからI/Oをリダイレクトします。

于 2011-06-21T22:11:57.613 に答える
0

プロセスからのストリームを処理しましたか? それらを読まないと、プロセスがハングします。

あなたの正確な問題は何ですか?

編集:多分この答えはあなたを助けるでしょう

于 2011-06-21T22:09:45.427 に答える