【问题标题】:Displaying process percentage on DOS screen在 DOS 屏幕上显示进程百分比
【发布时间】:2010-04-15 05:57:07
【问题描述】:

我在命令行模式下使用 7zip。

当操作耗时较长时,有时会显示一个进程百分比。

我想知道我们是否要使用 C#/Java 来执行此操作,使用什么库?

问候,

【问题讨论】:

    标签: c# java dos


    【解决方案1】:

    您可以打印“回车”,也称为'\r',以将“光标”重置到行首。

    System.out.printf("Progress: %3d %% \r", percentComplete);
    

    现在,每次打印该行时,您都会被送回起点,因此下一个百分比会覆盖前一个百分比。

    【讨论】:

      【解决方案2】:

      没有图书馆。您只需打印到控制台 System.out.print(不是 println!),然后发送退格字符以清除该行。

      System.out("Progress 5");
      System.out("\b\b\b\b\b\b\b\b\b\b");
      System.out("Progress 10");
      

      我有一段时间没有这样做了,但应该这样做。

      【讨论】:

      • +1 前几天我在 Mac 上玩 Mono/C# 时做了类似的事情,除了我用一个 \r 直接跳到行首.
      【解决方案3】:

      你可以清除控制台的踢...哦,别忘了 string.format 有百分比支持...

      using System;
      
      namespace ConsoleApplication1
      {
          class Program
          {
              static void Main(string[] args)
              {
                var perc = 0.0;
                while(perc <= 1.0)
                {
      
                  Threading.Thread.Sleep(50); //simulate doing some work
      
                  //EDIT:
                  //Console.Clear();
                  Console.Write(String.Format("{0:P}\r", perc)); //as per suggestion
      
                  perc += 0.01;
                }
                Console.WriteLine("Press any key to exit");
                var exit = Console.ReadKey();
            }
      
        }
      

      }

      【讨论】:

      • 叠印一行而不是清除整个屏幕的好处是(a)您不会丢失屏幕的其余内容,并且(b)重绘时它不会闪烁(好的,那个很着迷……)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      相关资源
      最近更新 更多