6

groovy で Advance % を表示したいので、同じ位置に書きたいと思います。

1%
2%
3%
...

ユーザーは、同じ場所で数字が変化するのを見るでしょう。それ、どうやったら出来るの?(私はWindowsで作業しています)

4

4 に答える 4

5

改行なしでキャリッジリターンを使用するだけで、これを頻繁に行います。

printf "%5d\r", loopval

ループするたびに、印刷は行の先頭から最初からやり直されます。

これが発生している間に他のメッセージが出力されると、特に他のメッセージに改行が含まれている場合は、少し面倒になる可能性があります。しかし、それは安くて汚い解決策です。

于 2012-05-21T18:37:00.263 に答える
2

Groovy に付属の jline を使用できます。

(1..5).each {
  print "Done $it of 5"
  Thread.sleep( 1000 )
  print jline.ANSIBuffer.ANSICodes.left( 9999 )
}

コンソールが ANSI エスケープ シーケンスをサポートしている限り、動作するはずです...

PS: 9999 を使用した理由は ( left のドキュメントに記載されているとおり)

n が現在のカーソル列以上の場合、カーソルは最初の列に移動します。

于 2012-05-21T15:10:14.590 に答える
1

Danny Y. が既に述べたように、改行は機能し、バックスペースも機能します。

(0..100).each {
  print "\b"*20+it+"%"
  sleep 100
}

私はかつて複数行の出力を上書きしなければなりませんでした - 私が見つけた解決策は

print "\r\n"*80

画面からすべての古いコンテンツをスクロールするために-良い解決策ではありませんが、Windowsシェルで動作します:-)

于 2012-05-22T08:02:54.500 に答える