2010-04-15 2 views
2

Я использую 7zip в режиме командной строки.Отображение процентной доли процесса на экране DOS

Когда операция занимает довольно много времени, иногда отображается процент процесса.

Интересно, хотим ли мы это сделать, используя C#/Java, какую библиотеку использовать?

С уважением,

ответ

3

нет библиотека. Вы просто печатаете на консоли System.out.print (not println!), Затем отправляете обратные символы, чтобы очистить строку.

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

Я не сделал этого некоторое время, но это должно сделать это.

+5

+1 Я сделал что-то вроде этого на другой день когда обманывал Mono/C# на Mac, за исключением того, что я использовал единственный '\ r', чтобы вернуться к началу строки за один прыжок. –

5

Вы можете распечатать «возврат каретки», также известный как '\r', чтобы сбросить «курсор» до начала строки.

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

Теперь каждый раз при печати линии, вы получите отправлены обратно в начале, так что следующий процент перезаписывает предыдущую.

0

Вы можете очистить консоль для пинков ... Ох, и не забудьте 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(); 
     } 

    } 

}

+2

Самое приятное в том, что печать одной строки вместо очистки всего экрана: (а) вы не потеряете остальную часть содержимого экрана и (б) она не мерцает, когда она перерисовывается (ладно, эта довольно навязчивая. ..) –

+0

Хорошо, я кое-что узнал сегодня :) –

Смежные вопросы