我有一個小Perl腳本(在Windows上),檢查一些文件,我作爲援助我一天的日常業務。目前,它打印出類似...我如何更新一個Perl命令行應用程序進度顯示?
0%
25%
50%
75%
Complete
但我能記得的腳本,我在沒有一行接一行的基礎上打印進度的完成使用,但其更新輸出在顯示器上,大概是通過將光標移回並過度打印那裏的東西。
任何人都知道需要什麼樣的魔力?可移植性對我來說並不重要,該腳本完全是一次性的。
我有一個小Perl腳本(在Windows上),檢查一些文件,我作爲援助我一天的日常業務。目前,它打印出類似...我如何更新一個Perl命令行應用程序進度顯示?
0%
25%
50%
75%
Complete
但我能記得的腳本,我在沒有一行接一行的基礎上打印進度的完成使用,但其更新輸出在顯示器上,大概是通過將光標移回並過度打印那裏的東西。
任何人都知道需要什麼樣的魔力?可移植性對我來說並不重要,該腳本完全是一次性的。
除了其他的答案,\ R將返回到當前行
您應該能夠打印一個退格字符「\ B」來移動光標,讓您可以覆蓋以前打印的內容。
我不知道,如果這個工程在Perl,但在C/C++,你可以使用
\b的退格。使用其中的幾個,你可以移動光標來覆蓋舊的值。
的開始,您可以使用curses做出一個漂亮的進度條。
編輯: 或者做這樣的事情:
print "##### [ 10%]\r";
# Do something
print "########## [ 20%]\r";
# Do something else
print "############### [ 30%]\r";
# Do some more
# ...
# ...
# ...
print "##################################### [100%]\n";
print "Done.\n";
如果你需要做在Perl的東西,它很可能是有人做了它並將其上傳到CPAN。看看"progress" in their name的一些模塊。
如Time :: Progress在Windows上很好用 – 2017-01-20 01:09:36
我想在Windows上你需要調用`binmode(STDOUT)`,`\ r`才能按照你想要的方式工作。 – 2008-11-10 17:16:03