纯批处理延时
示例:
1. 延时 10 秒:复制代码 2. 延时23小时:复制代码 注意:不支持超过一天的延时(应小于86400秒)
代码如下- @echo off
- setlocal enabledelayedexpansion
-
- call :Slepp1d 10
- pause
- goto :eof
-
- :: Call :Slepp1d_loop 5
- goto :eof
- :Slepp1d
- if not defined time_start (
- set/a n_sleep=%~1
- set time_start=%time%
- call :Slepp1d_Count !time_start!
- if not defined n_star set/a n_star=!dt1c!
- )
- call :Slepp1d_count %time%
- set/a n_now=%dt1c%
- set/a n_check=%n_star% + %n_sleep% - %n_now%
- if %n_check% geq 0 (
- if "%n_check%" neq "%n_check_last%" echo %n_check% %hns%
- set n_check_last=%n_check%
- ping -w 500 -n 2 0.0.0.0 >nul
- goto :Slepp1d
- )
- goto :eof
- :Slepp1d_Count
- set dt1=%~1
- for /f "delims=: tokens=1,2,3*" %%i in ("%dt1%") do (
- set dt1h=%%i
- if "!dt1h:~0,1!"=="0" set/a dt1h=!dt1h:~1,1!
- set dt1n=%%j
- if "!dt1n:~0,1!"=="0" set/a dt1n=!dt1n:~1,1!
- set dt1s=%%k
- set dt1s=!dt1s:~0,2!
- if "!dt1s:~0,1!"=="0" set/a dt1s=!dt1s:~1,1!
- )
- set "hns=%dt1h%:%dt1n%:%dt1s%"
- set/a dt1c=(%dt1h% * 60 * 60) + (%dt1n% * 60) + (%dt1s%)
- set/a dt1c=%dt1c% %% (60 * 60 * 24)
- goto :eof
复制代码
|