我一直想知道人们如何更新命令行中的上一行.一个很好的例子就是在linux中使用wget命令.它会创建一个类似于此的ASCII加载栏:
[======>] 37%
当然,加载条移动并且百分比发生变化,但它不会形成一条新线.我无法弄清楚如何做到这一点.有人能指出我正确的方向吗?
我正在尝试在我的php CLI应用程序上运行一个"实时"进度指示器.而不是输出为
1Done
2Done
3Done
Run Code Online (Sandbox Code Playgroud)
我希望它清除并显示最新结果.system("command\C CLS")不起作用.也没有ob_flush(),flush()或我发现的任何其他内容.
我正在运行Windows 7 64位终极版,我注意到命令行实时输出,这是出乎意料的.每个人都警告我,不会...但它确实... 64位额外奖励?
干杯求救!
如果可以的话,我想避免回复24条新线路.
我的程序(碰巧在Perl中,虽然我不认为这个问题是Perl特定的)在表单的程序中的某一点输出状态消息,Progress: x/yy其中x和yy是一个数字,如:Progress: 4/38.
当打印新状态消息时,我想"覆盖"上一个输出,因此我不会在屏幕上显示状态消息.到目前为止,我试过这个:
my $progressString = "Progress\t$counter / " . $total . "\n";
print $progressString;
#do lots of processing, update $counter
my $i = 0;
while ($i < length($progressString)) {
print "\b";
++$i;
}
Run Code Online (Sandbox Code Playgroud)
如果我在其中包含换行符,则不会打印退格符$progressString.但是,如果我省略换行符,则永远不会刷新输出缓冲区,也不会打印任何内容.
对此有什么好的解决方案?
我有以下代码:
$data = ['a','b','c'];
$total = count($data);
for($i = 0; $i < $total; $i++) {
echo $data;
}
Run Code Online (Sandbox Code Playgroud)
我需要的是当代码运行时cmd,cmd将输出每个字符,以便它替换显示中的前一个字符,如下所示:
a >>然后改为显示b >>然后改为显示c
......只有一行.
想象在cmd的第3行将交替显示该单词(a - > b - > c)
我尝试过"\ r",但结果在cmd中没有任何结果.你能帮忙吗?