2012-05-21 12 views
6

मैं ग्रूवी में अग्रिम% दिखाना चाहते हैं, तो मैं एक ही स्थिति है, जिसका अर्थ देखने की है कि बजाय पर लिखना चाहते हैं:ग्रोवी: स्क्रीन पर एक ही स्थिति पर एक पंक्ति पर कैसे लिखना है? (विंडोज़)

1% 
2% 
3% 
... 

उपयोगकर्ता आंकड़े एक ही स्थान में बदल रहा है देखेंगे। मैं यह कैसे कर सकता हूं? (मैं खिड़कियों पर काम कर रहा हूँ)

उत्तर

4

मैं यह बार-बार के लिए, बस लाइन फ़ीड के बिना एक गाड़ी वापसी का उपयोग कर:

printf "%5d\r", loopval 

अपने पाश के माध्यम से हर बार, मुद्रण पंक्ति के आरंभ में फिर से शुरू होगा।

यदि यह हो रहा है, तो यह किसी अन्य संदेश को प्रिंट करना चाहिए, विशेष रूप से यदि अन्य संदेश में न्यूलाइन हो, तो यह एक गड़बड़ हो सकती है। लेकिन यह एक सस्ता और गंदे समाधान है।

+0

मुझे नहीं मिल सकता मैकोज़ पर काम करने के लिए, आउटपुट ओवरराइट नहीं किया गया है लेकिन जोड़ा गया है। कोई विचार? –

+0

ओएसएक्स 10.8.5 पर काम करता है, groovy 2.2.1 जेवीएम 1.7.0। – youri

2

आप jline कि ग्रूवी के साथ आता है का उपयोग कर सकते हैं:

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

जब तक अपने कंसोल एएनएसआई भागने दृश्यों का समर्थन करता है, कि काम करना चाहिए ...

पुनश्च: मैं 9999 में प्रयोग किया जाता है क्योंकि (जैसा कि the documentation for left में कहते हैं)

यदि n अधिक से अधिक या वर्तमान कर्सर स्तंभ के बराबर है, कर्सर पहले कॉलम में ले जाया जाता

+0

यह बहुत अच्छी तरह काम करने के लिए नहीं लगता है, मैं इस हो रही है: 5 हो गया 1 [9999DDone की 2 से 5 [9999DDone 5 में से 3 [9999DDone 4 का 5 [ 99 99DDone 5 में से 5 [99 99 डी – Yossale

+0

आप किस कंसोल का उपयोग कर रहे हैं? विंडोज? यदि आप इसे ग्रोवी कंसोल में आजमा रहे हैं, तो यह काम नहीं करेगा। –

+0

मैं विंडोज़ पर काम कर रहा हूं - यह सीएमडी प्रॉम्प्ट में, ग्रोवी कंसोल में और इंटेलिज आइडिया कंसोल आउटपुट – Yossale

1

के रूप में डैनी वाई पहले से ही कहा गया है, एक लाइन फ़ीड काम करेंगे, backspaces भी चाल करना होगा:

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

मैं एक बार एक multipline उत्पादन अधिलेखित करने के लिए किया था - समाधान मैंने पाया

print "\r\n"*80 
लिए किया गया था

आदेश स्क्रीन के बाहर सभी पुराने सामग्री स्क्रॉल करने के लिए में - नहीं एक अच्छा समाधान है, लेकिन यह काम खिड़कियों :-)

2

शैल पर किसी को भी जो इस भर आता है - मैं foll का उपयोग कर पाया सबसे अच्छा समाधान हो के कारण:

(0..100).each { 
    print "\r$it%" 
} 
println() 
संबंधित मुद्दे