批處理實現sleep

2021-04-15 16:44:35 字數 1420 閱讀 1692

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

結論:此方法不斷查詢系統時間,當前後時間差達到要求的時間時返回,模擬了

sleep

函式。但是,仍存在弊端。

1. 精確度略大於

0.01

秒2.時間不能超過

1 小時(可以延長至

1 天,但意義不大)

3. 執行期間不斷執行查詢,完全占用

cpu

批處理 sleep處理

echo off echo q debug nul echo bj jzh 0x ppppppa de dm do dh ls lu lx lezrr eeeuyrx2dx sleep.com echo 0dxfp,0xx.t0p,xtgsb4o piyu wwx0gwuy wv ovbx2gv0e...

完美的批處理Sleep

sleep的地方都是借助於ping來實現,因為windows的ping在發每個包之間都會呼叫kernel32 sleep來掛起1秒鐘。最有意思的是在給sleep傳遞引數的時候還會扣掉通訊往返所花的時間,所以非常精確。這部分反彙編出來是這樣的 010020fe b8e8030000 mov eax,3...

Windows批處理奇淫技巧之sleep

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!在windows上想用批處理指令碼幹點啥還真是麻煩,乙個linux上簡簡單單的sleep命令,在windows的批處理裡竟然沒有提供,找了一下發現下面兩種奇淫技巧倒是可以變相的實現 方法一ping n 3 127.0.0.1 nul其中3是需要sl...