groovy で Advance % を表示したいので、同じ位置に書きたいと思います。
1%
2%
3%
...
ユーザーは、同じ場所で数字が変化するのを見るでしょう。それ、どうやったら出来るの?(私はWindowsで作業しています)
groovy で Advance % を表示したいので、同じ位置に書きたいと思います。
1%
2%
3%
...
ユーザーは、同じ場所で数字が変化するのを見るでしょう。それ、どうやったら出来るの?(私はWindowsで作業しています)
改行なしでキャリッジリターンを使用するだけで、これを頻繁に行います。
printf "%5d\r", loopval
ループするたびに、印刷は行の先頭から最初からやり直されます。
これが発生している間に他のメッセージが出力されると、特に他のメッセージに改行が含まれている場合は、少し面倒になる可能性があります。しかし、それは安くて汚い解決策です。
Groovy に付属の jline を使用できます。
(1..5).each {
print "Done $it of 5"
Thread.sleep( 1000 )
print jline.ANSIBuffer.ANSICodes.left( 9999 )
}
コンソールが ANSI エスケープ シーケンスをサポートしている限り、動作するはずです...
PS: 9999 を使用した理由は ( left のドキュメントに記載されているとおり)
n が現在のカーソル列以上の場合、カーソルは最初の列に移動します。
Danny Y. が既に述べたように、改行は機能し、バックスペースも機能します。
(0..100).each {
print "\b"*20+it+"%"
sleep 100
}
私はかつて複数行の出力を上書きしなければなりませんでした - 私が見つけた解決策は
print "\r\n"*80
画面からすべての古いコンテンツをスクロールするために-良い解決策ではありませんが、Windowsシェルで動作します:-)