ネットCLIアプリケーションでの進捗率を表示するための最良の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/1076761

質問

私は、ファイルのアップロードを扱うCLIアプリケーションに取り組んでいる、および特許と上書きの出力の組み合わせを持っていると思います。理想的には、それは次のようになります:

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

私はちょうど最後の行は、定期的に進捗率と現在の速度を更新したいと思います。私は、コンソールの任意の部分に出力を書き込むためにSetCursorPositionを使用できることを知っているが、そこにはGetCursorPositionがなく、最近印刷されたファイル名の絶対位置が異なります表示されます。また、私はこのすべてがリダイレクトされた出力にどのような影響を与えるか疑問に思うが、それを正しく扱うことは、このアプリのために重要ではない。

編集:Console.CursorLeft / Console.CursorTopなどのように見えるが私の現在のカーソル位置を与えます。私も右のemを見て!しかたがない。誰がそれを望んでいる場合は無料受け入れ答えます。

役に立ちましたか?

解決

は、

;-)現在のカーソル位置を取得するためにConsole.CursorLeft / Console.CursorTopを使用して考えがあります

他のヒント

このを行うのは非常に簡単です。 \ rの文字は現在の行の先頭にカーソルを移動します。

for(int i = 0; i <= 100; i++)
{
   printf("Progress: %02d \r", i);
   fflush(stdout);
   Sleep(200);
}

printf("\n");

これは、プラットフォームの制限はありません。私は呪いが原料のちょうどこの種を行うための優れたツールで、Windows上のバージョンがあることを知っています。 (Nethackのは、必要なコントロールのちょうど一種の偉大な例であり、Windowsコンソールのバージョンがボーナスとして非常に面白いです。)しかし、.NET上のコントロールのレベルのために何があるかどうかはわかりません。おそらく、呪いのマネージコードでのコンパイルは、あなたがやりたいのでしょうか?

古いDOSの時代から来た最も簡単な解決策は、最後のパーセントの出力をオフにして、新しいものを印刷するには、コンソールに十分なバックスペース(\ B)を記述することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top