代码之家  ›  专栏  ›  技术社区  ›  Luke

在.NET CLI应用程序中显示完成百分比的最佳方法是什么?

  •  4
  • Luke  · 技术社区  · 15 年前

    我正在开发一个处理文件上传的CLI应用程序,希望将附加输出和覆盖输出结合起来。理想情况下,它看起来像这样:

    c:\>upload
    file1.dat       100%
    file2.dat       100%
    file3.dat        59%, 36.4k/s
    

    我只希望最后一行定期更新完成百分比和当前速度。我知道可以使用setCursorPosition将输出写入控制台的任何部分,但似乎没有getCursorPosition,并且最近打印的文件名的绝对位置会有所不同。我还想知道所有这些都将如何影响重定向输出,但是正确处理这些对于这个应用程序来说并不重要。

    编辑 :console.cursorLeft/console.cursorTop等将提供当前光标位置。我也看着他们!哦,好吧。如果有人想要免费接受的答案。

    4 回复  |  直到 15 年前
        1
  •  3
  •   NoahD    15 年前

    是否考虑使用console.cursorLeft/console.cursorTop获取当前光标位置;-)

        2
  •  1
  •   Jason    15 年前

    这很简单。 字符将光标移动到当前行的开头。

    for(int i = 0; i <= 100; i++)
    {
       printf("Progress: %02d \r", i);
       fflush(stdout);
       Sleep(200);
    }
    
    printf("\n");
    
        3
  •  0
  •   Paul Sonier    15 年前

    这不是一个平台限制;我知道Curses是一个很好的工具,只做这类事情,而且Windows上有一个版本。(nethack是一个很好的例子,只是你需要的那种控制,而windows控制台版本作为一个额外的奖励是很有趣的。)不过,我不知道.net上是否有这种控制级别的东西。也许用托管的诅咒代码编译可以做你想做的事?

        4
  •  0
  •   arbiter    15 年前

    旧DOS时代最简单的解决方案是在控制台中写入足够的backspace(\b),以清除最后的百分比输出,然后打印新的输出。