2010/12/13

入出力のコンソールを子プロセスと共有して進捗などを表示

NILScriptは、コマンドラインで指定された処理を行って直ちに終了するコンソールプログラムを組み合わせた自動処理の実現にも役立ちます。

動画変換やダウンロードなど時間のかかる処理を行うプログラムの多くは、標準出力で進捗状況を確認できるようになっていますが、作業中にバックグラウンドで自動処理させたい場合には、子プロセスが起動するたびにコンソールウィンドウが表示されては邪魔になってしまいます。
しかし、完全に出力を非表示にしてしまうと、残り所要時間が把握しづらく不便です。

スクリプトのプロセスが所有するコンソールに子プロセスの出力を表示するようにすれば、いちいち新たなウィンドウを表示せずに進捗状況を確認できるようになって便利です。
NILScriptのrun()やProcess.create()では、以下のようにオプションオブジェクトに「shareConsole:true」を指定する事で、子プロセスと現在のプロセスのコンソールを共有させられるので、簡単に子プロセスの出力を自分のコンソールに表示させられます。

println("1/3")
run('"'+app1+'" "'+file+'"',{shareConsole:true}).waitExit();
println("2/3")
run('"'+app2+'" "'+file+'"',{shareConsole:true}).waitExit();
println("3/3")
run('"'+app3+'" "'+file+'"',{shareConsole:true}).waitExit();
println("done");

0 件のコメント:

コメントを投稿