.png ファイルを探してディレクトリを再帰し、それぞれでpngquant (コマンドライン ユーティリティ) を呼び出す Groovy スクリプトがあります。pngquant の出力は端末に出力されます。関連するコードは次のとおりです。
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)
}
}
スクリプトは正常に動作しますが、すべてのファイルが処理されると、 stout がまだリダイレクトされているように見えます。これは、Ctrl+でプロセスを強制終了しない限り、コマンド プロンプトが表示されないためCです。どういうわけか「元に戻す」必要がありますか
pngquantCmd.consumeProcessOutput(System.out, System.err)
または、このプロセスの出力をコンソールにリダイレクトするより良い方法はありますか? を追加するだけでこの問題を解決できると思いますSystem.exit(0)
が、これは正しい解決策とは思えません。この問題は Linux でのみ発生します。