我正在使用批處理腳本進行時間測量命令。我在StackOverflow上找到了這個腳本。不幸的是,它有時不能正常工作,不幸的是我對批量編程知之甚少。我覺得它有時候有用,有時候不會。也許我在這方面犯錯,但看起來它在午夜後不能正常工作。時間測量的批處理腳本無法正常工作
腳本:
@echo off
setlocal
rem The format of %TIME% is HH:MM:SS,CS for example 23:59:59,99
set STARTTIME=%TIME%
rem here begins the command you want to measure
dir /s > nul
rem here ends the command you want to measure
set ENDTIME=%TIME%
echo STARTTIME %STARTTIME%
rem convert STARTTIME and ENDTIME to centiseconds
set /A STARTTIME=(1%STARTTIME:~0,2%-100)*360000 + (1%STARTTIME:~3,2%-100)*6000 + (1%STARTTIME:~6,2%-100)*100 + (1%STARTTIME:~9,2%-100)
echo STARTTIME %STARTTIME%
echo ENDTIME %ENDTIME%
set /A ENDTIME=(1%ENDTIME:~0,2%-100)*360000 + (1%ENDTIME:~3,2%-100)*6000 + (1%ENDTIME:~6,2%-100)*100 + (1%ENDTIME:~9,2%-100)
echo ENDTIME %ENDTIME%
rem calculating the duration is easy
set /A DURATION=%ENDTIME%-%STARTTIME%
rem we might have measured the time inbetween days
if %ENDTIME% LSS %STARTTIME% set set /A DURATION=%STARTTIME%-%ENDTIME%
rem outputing
echo DURATION: %DURATION% in centiseconds
endlocal
goto :EOF
我用它半小時前,我得到了這樣的結果:
STARTTIME 1:29:25.17
STARTTIME 1:29:25.17
ENDTIME 1:29:27.82
ENDTIME 1:29:27.82
DURATION: 1 in centiseconds
因此,一些與線
set /A STARTTIME=(1%STARTTIME:~0,2%-100)*360000 + (1%STARTTIME:~3,2%-100)*6000 + (1%STARTTIME:~6,2%-100)*100 + (1%STARTTIME:~9,2%-100)
和
該行
set /A ENDTIME=(1%ENDTIME:~0,2%-100)*360000 + (1%ENDTIME:~3,2%-100)*6000 + (1%ENDTIME:~6,2%-100)*100 + (1%ENDTIME:~9,2%-100)
似乎是錯的。
這是什麼?
問候, 大衛
+1,儘管無需檢查是否存在空格,您可以無條件替換爲'0':'SET'STARTTIME =%STARTTIME:= 0%「',對於'ENDTIME'也是如此。這樣,如果您在計算之前立即將其置於計算之前,則可以保持代碼的其餘部分不變。 –
好主意,我編輯它。我在考慮領導0將指定八進制符號,這很可能是前面1的目的。 – user2033427