windows批处理中实现延时的办法

windows批处理中实现延时的办法

 

五种方法可以实现批出里的延时,推荐使用方法一,该方法也是使用最多的.

 

方法一 用ping命令延迟(这是最简单而且是最常见的):

 

@echo off

 

echo "use ping to delay"

 

set SLEEP=ping 127.0.0.1 /n

 

echo %time%

 

%SLEEP% 4 > nul

 

echo %time%

 

pause

 

方法二 还可以用for循环作延迟,例如:

 

@echo off

 

echo "use for to delay"

 

echo %time%

 

for /l %%i in (1,1,100) do echo %%i >nul

 

echo %time%

 

pause

 

方法三 用choice命令作延迟:例如

 

@echo off

 

echo "use choice to delay"

 

CHOICE /T 3 /C ync /CS /D y

 

if errorlevel 1 goto next

 

:next

 

:: /T:为暂停秒数(0~9999)这里是暂停10秒的意思

 

:: /D:为在 nnnn 秒之后(即/T设定的时间)指定默认选项。

 

:: /c:为指定要创建的选项列表。默认列表是 "YN"。若只作延迟,这里可以设置默认选项为y,暂停后通过if去到默认的标签处执行后面的命令。

 

:: 若想了解更多可以在cmd中输入choice/?

 

方法四 用vbs作延迟(可精确到毫秒):

 

@echo off

 

echo "use vbs to delay"

 

echo %time%

 

call :delay 3000

 

echo %time%

 

pause

 

exit

 

:delay

 

echo WScript.Sleep %1>delay.vbs

 

CScript //B delay.vbs

 

del delay.vbs

 

方法五 纯粹用bat延迟(最为复杂,可精确到毫秒):

 

@echo off

 

set /p delay=请输入需延迟的毫秒数:

 

set TotalTime=0

 

set NowTime=%time%

 

::读取起始时间,时间格式为:13:01:05.95

 

echo 程序开始时间:%NowTime%

 

:delay_continue

 

set /a minute1=1%NowTime:~3,2%-100

 

::读取起始时间的分钟数

 

set /a second1=1%NowTime:~-5,2%%NowTime:~-2%0-100000

 

::将起始时间的秒数转为毫秒

 

set NowTime=%time%

 

set /a minute2=1%NowTime:~3,2%-100

 

:: 读取现在时间的分钟数

 

set /a second2=1%NowTime:~-5,2%%NowTime:~-2%0-100000

 

::将现在时间的秒数转为毫秒

 

set /a TotalTime+=(%minute2%-%minute1%+60)%%60*60000+%second2%-%second1%

 

if %TotalTime% lss %delay% goto delay_continue

 

echo 程序结束时间:%time%

 

echo 设定延迟时间:%delay%毫秒

 

echo 实际延迟时间:%TotalTime%毫秒

 

pause

 

posted @ 2019-04-19 17:24  滤v镜  阅读(2718)  评论(0编辑  收藏  举报