Windows命令:时间延迟命令
延迟一段时间再执行下一条命令”。
一、利用ping实现延迟命令
这种延时手段是不精确的,因为每一次ping通的延迟不一样。
1、示例
chcp 65001 @echo off echo 延时前:%time% ping /n 3 127.0.0.1 >nul echo 延时后:%time% pause
参数/n表示ping通的次数。
127.0.0.1是本机ip地址,在这里可以简写成127.1。
>nul表示不将结果显示在屏幕上。
在Bat文件中执行,效果如下,可以看到延时了2秒钟。
二、利用循环命令for外加参数/l实现延时
添加参数/l,然后设置start、step、end分别为1、1、n,通过调整变量n的数值大小,就可以改变延时长短。
这个延时,也是不精确的。
1、示例
chcp 65001 @echo off echo 延时前:%time% for /l %%i in (1,1,100000) do echo %%i>nul echo 延时后:%time% pause
在bat文件中执行,结果如下,10万次对应大概20s的延时。
三、利用goto循环实现对精确延时
实现原理:
用户给出延时时间T,在进入延时循环之前记一次当前时间t1,而后执行到循环最后一句时再记一次当前时间t2;如果通过if命令语句判断出来T大于t2和t1的差值,就借goto命令语句再次进入循环,而如果判断出来小于差值,就用goto :eof命令退出循环。
1、代码示例(不调用子程序),在bat脚本中执行下面的代码:
@echo off chcp 65001 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
回车执行后,提示输入延迟毫秒数
延时精度:
windows系统时间只能精确到10毫秒,所以理论上有可能存在10毫秒误差。经测试,当延迟时间大于500毫秒时,上面的延迟程序一般不存在误差。当延迟时间小于500毫秒时,可能有几十毫秒误差,为什么?因为延迟程序本身也是有运行时间的,同时系统时间只能精确到10毫秒。
2、下面再给出一个需要调用子程序的延时代码,实现原理和上面的一样。
@echo off echo 程序开始时间:%Time% call :delay 10 echo 实际延迟时间:%totaltime%毫秒 echo 程序结束时间:%time% pause exit ::-----------以下为延时子程序-------------------- :delay @echo off if "%1"=="" goto :eof set DelayTime=%1 set TotalTime=0 set NowTime=%time% ::读取起始时间,时间格式为:13:01:05.95 :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 %DelayTime% goto delay_continue goto :eof
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具