5

我有一个小的 Perl 脚本(在 Windows 上),它可以帮我检查一些文件,以帮助我完成日常业务。目前它打印出类似...

0%
25%
50%
75%
Complete

但我记得我过去使用的脚本不是逐行打印进度,而是更新了显示器上的输出,大概是通过将光标移回并重叠打印那里的内容。

有谁知道需要什么魔法吗?可移植性对我来说并不重要,脚本是一次性的。

4

6 回答 6

8

您可以使用诅咒并制作一个不错的进度条。

编辑:或者做这样的事情:

print "#####                                 [ 10%]\r";
# Do something
print "##########                            [ 20%]\r";
# Do something else
print "###############                       [ 30%]\r";
# Do some more
# ...
# ...
# ...
print "##################################### [100%]\n";
print "Done.\n";
于 2008-11-10T09:18:15.057 回答
6

除了其他答案, \r 将回到当前行的开头

于 2008-11-10T09:10:49.440 回答
6

如果您需要在 Perl 中做某事,很可能有人已经完成并将其上传到 CPAN。查看一些名称中带有“progress”的模块。

于 2008-11-10T11:45:39.440 回答
6

您可能对智能评论感兴趣。这可能比编写自己的进度条更容易。

于 2008-11-10T11:48:39.027 回答
2

您应该能够打印退格字符 '\b' 以将光标向后移动,这样您就可以覆盖之前打印的内容。

于 2008-11-10T09:05:03.460 回答
0

我不知道这是否适用于 Perl,但在 C/C++ 中你可以使用

\b
退格。使用其中的几个,您可以移动光标以覆盖旧值。

于 2008-11-10T09:06:32.490 回答