2008-11-10 32 views
5

我有一個小Perl腳本(在Windows上),檢查一些文件,我作爲援助我一天的日常業務。目前,它打印出類似...我如何更新一個Perl命令行應用程序進度顯示?

0% 
25% 
50% 
75% 
Complete 

但我能記得的腳本,我在沒有一行接一行的基礎上打印進度的完成使用,但其更新輸出在顯示器上,大概是通過將光標移回並過度打印那裏的東西。

任何人都知道需要什麼樣的魔力?可移植性對我來說並不重要,該腳本完全是一次性的。

回答

6

除了其他的答案,\ R將返回到當前行

2

您應該能夠打印一個退格字符「\ B」來移動光標,讓您可以覆蓋以前打印的內容。

0

我不知道,如果這個工程在Perl,但在C/C++,你可以使用

\b
的退格。使用其中的幾個,你可以移動光標來覆蓋舊的值。

8

的開始,您可以使用curses做出一個漂亮的進度條。

編輯: 或者做這樣的事情:

print "#####         [ 10%]\r"; 
# Do something 
print "##########       [ 20%]\r"; 
# Do something else 
print "###############      [ 30%]\r"; 
# Do some more 
# ... 
# ... 
# ... 
print "##################################### [100%]\n"; 
print "Done.\n"; 
+0

我想在Windows上你需要調用`binmode(STDOUT)`,`\ r`才能按照你想要的方式工作。 – 2008-11-10 17:16:03

6

如果你需要做在Perl的東西,它很可能是有人做了它並將其上傳到CPAN。看看"progress" in their name的一些模塊。

+0

如Time :: Progress在Windows上很好用 – 2017-01-20 01:09:36

6

您可能感興趣的Smart Comments。這可能比編碼自己的進度條更容易。

+0

謝謝zoul,這是一個非常聰明的;-)模塊,你在這裏推薦。 – 2008-11-10 13:16:53

相關問題