時間計測
%TIME%という特殊な環境変数があり、ここには現在の時刻が格納されています。
echo %TIME%
12:09:22.90
なので、この文字列を区切って時・分・秒にすればよいです。
しかし、この分を次のように取ると、
set t=%TIME% set /a m = %t:~3,2%
無効な数字です。数値定数は 10 進 (17 桁)、16 進 (0x11 桁)、 または 8 進 (021 桁) です。
というエラーが出ます。最初が0だと8進だと解釈されるんですね。だから09は整数にできないのです。そのために次のようにしましょう。
set /a m = 1%t:~3,2% %% 100
09の前に1をつけて109にして100の剰余を得ます。これで9になります。
このようにして各成分を取って100分の1秒単位の時間を得ます。それをコードの実行の間で取って、それらを引き算します。そのコードが次です。和を取る処理の実行時間を計測しています。
@echo off set /a N = 60000 call :get_time set /a t = %ERRORLEVEL% call :sum %N% echo %ERRORLEVEL% call :get_time set /a t = %ERRORLEVEL% - %t% echo %t:~0,-2%.%t:~-2%s exit /b 0 :sum set /a s = 0 for /L %%i in (1, 1, %N%) do set /a s += %%i exit /b %s% :get_time setlocal set t=%TIME% set /a h = %t:~0,2% set /a m = 1%t:~3,2% %% 100 set /a s = 1%t:~6,2% %% 100 set /a ss = 1%t:~-2% %% 100 set /a ret = ((%h% * 60 + %m%) * 60 + %s%) * 100 + %ss% exit /b %ret%