Java プログラム内からバッチ ファイルを実行しようとしていますが、奇妙な動作が発生します。
Process p = Runtime.getRuntime().exec("cmd /c start temp.bat");
これは通常問題なく実行されますが、バッチ ファイル内のパイプ コマンドが機能しないことがわかりました。助言がありますか?
Java プログラム内からバッチ ファイルを実行しようとしていますが、奇妙な動作が発生します。
Process p = Runtime.getRuntime().exec("cmd /c start temp.bat");
これは通常問題なく実行されますが、バッチ ファイル内のパイプ コマンドが機能しないことがわかりました。助言がありますか?
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() );
Processオブジェクトを使用して、getOutputStream()およびgetInputStream()を使用して、プロセスからI/Oをリダイレクトします。