2016-03-29 123 views
1

Windowsバッチ(cmd)ファイルで長時間実行されている操作の進捗をパーセンテージでどのように表示できますか?いくつかのコード例を共有できますか?ここでバッチファイルの進捗率

+0

具体的にどのような操作に依存するのですか。 –

+0

はい、同意します。操作を個別の手順に細分することができれば簡単です。詳細は私の答えを見てください。 –

答えて

0

はどのように...

注:このコードはthis答えを少し変更したバージョンです。

@echo off 

for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a" 

FOR /L %%n in (1,1,10) DO (
    call :show_progress %%n 10 
    ping localhost -n 2 > nul 
) 

echo Done! 
exit /b 

:show_progress 
setlocal EnableDelayedExpansion 
set current_step=%1 
set total_steps=%2 
set /a "progress=(current_step * 100)/total_steps" 

set /p ".=Progress: !progress!%%!CR!" <nul 

if !progress! equ 100 echo. 

exit /b 
+0

私は 'if!progress! EQU 100'は '=='が文字列比較を強制するため真の数値比較を行います... – aschipfl

+0

はい良い点! –

+0

すべての 'setlocal'を' endlocal'とマッチングさせて読みやすくするのはよいコーディング方法です。興味深い@SandeepDattaは、 '!cr!'は変数に格納されているキャリッジリターンを出力ストリームに置きますが、 '%cr%'はそうではありません。後者がなぜ機能しないのか分かりますか? –