私はGroovyスクリプトを使用して、.pngファイルを探すディレクトリを再帰的に実行し、それぞれにpngquant(コマンドラインユーティリティ)を呼び出します。 pngquantの出力は端末に出力されるべきです。関連するコードは次のとおりです。Groovyでプロセス出力を取得する
def command = "pngquant -f -ext .png"
root.eachFileRecurse(groovy.io.FileType.FILES) {File file ->
if (file.name.endsWith('.png')) {
println "Compressing file: $file"
def imgCommand = "$command $file.absolutePath"
Process pngquantCmd = imgCommand.execute()
pngquantCmd.consumeProcessOutput(System.out, System.err)
}
}
スクリプトが正常に動作しますが、すべてのファイルが処理された後、私はCtrlキーを使用してプロセスを強制終了しない限り、コマンド・プロンプトが表示されませんので、スタウトはまだリダイレクトされているようです + C。私は何とか
pngquantCmd.consumeProcessOutput(System.out, System.err)
またはコンソールに、このプロセスの出力をリダイレクトするためのより良い方法があるが、「元に戻す」する必要がありますか?私はSystem.exit(0)
を追加するだけでこの問題を解決できると思いますが、これは正しい解決策のようには見えません。問題はLinuxでのみ発生します。
waitForProcessOutput(System.out、System.err)はうまく動作しますか? –
@tim_yatesはい、それはずっと良くなりました、ありがとうございます!あなたが答えとしてそれを投稿すれば、私はそれを受け入れるでしょう –