Linux的Shell里,提供了sleep命令,参考了不少前辈的帖子,我也用批处理实现了sleep。
/********************************sleep.bat**************************************/
@ECHO OFF
SETLOCAL
ECHO %TIME%
CALL :Sleep %1
ECHO %TIME%
ENDLOCAL
GOTO :EOF
:Sleep
SETLOCAL EnableExtensions
FOR /f "tokens=2-4 delims=:. " %%a IN ("%TIME%") DO (
SET /a min_p=1%%a
SET /a csec_p=1%%b%%c
)
SET /a min_p=%min_p%-100
SET /a csec_p=%csec_p%-10000
:_procwaitloop
FOR /f "tokens=2-4 delims=:. " %%i IN ("%TIME%") DO (
SET /a min=1%%i
SET /a csec=1%%j%%k
)
SET /a min=%min%-100
SET /a csec=%csec%-10000
IF %csec% LSS %csec_p% (
SET /a csec=6000+%csec%-%csec_p%
SET /a reg=1
) ELSE (
SET /a csec=%csec%-%csec_p%
SET /a reg=0
)
IF %min%-%reg% LSS %min_p% (
SET /a min=60+%min%-%reg%-%min_p%
) ELSE (
SET /a min=%min%-%reg%-%min_p%
)
SET /a delta=%min%*6000+%csec%
IF %delta% LSS %1 GOTO _procwaitloop
ENDLOCAL
GOTO :EOF
Input:
sleep 30
Output:
18:07:34.26
18:07:34:56