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...