首页 > 系统相关 >Windows命令:时间延迟命令

Windows命令:时间延迟命令

时间:2024-09-24 10:50:35浏览次数:8  
标签:set 时间延迟 Windows NowTime echo 命令 2% 延时 毫秒

延迟一段时间再执行下一条命令”。

一、利用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

标签:set,时间延迟,Windows,NowTime,echo,命令,2%,延时,毫秒
From: https://www.cnblogs.com/radishs/p/18428687

相关文章

  • Windows MAVEN 安装使用整合idea
     官网下载地址Maven–DownloadApacheMaven安装        1.下载好的文件放在盘符本地        2.配置环境变量    3.编辑Path    4.查看cmd是否安装成功cmd输入mvn看是否有内容配置镜像源    1.找到目录下......
  • [redis命令]字符串命令
    命令表命令含义SET设置指定key的值GET获取指定key的值GETRANGE返回key中字符串值的子字符GETSET将给定key的值设为value,并返回key的旧值(oldvalue)GETBIT对key所储存的字符串值,获取指定偏移量上的位(bit)MGET获取所有(一个或多个)给定key的值SETBIT......
  • 使用Copilot AI解决openwrt 19.07 nas samba在Windows网络[网上邻居]中无法看到的问题
    1.问题缘由我的一台openwrt路由可以在Win11的网络中看到,另一台自己刷的openwrt19.07nas却在win11网络中看不到,但直接用IP可以访问其samba3.6共享的文件夹。为何这台不能被Windows发现呢?2.问题解决自己搜索了下,找不到解决方案,问了下Googlegemini,回答不能解决,有点答非所闻......
  • Does windows have a shell layer?
    BasedonchatGPTYes,Windowshasashelllayer,whichservesastheinterfacebetweentheuserandtheoperatingsystem.Theterm"shell"inthiscontextreferstothesystemthatprovidesaccesstotheoperatingsystem’sservicesandresource......
  • Linux常用命令
    在Linux系统中,有许多常用的命令用于日常操作、文件管理、系统监控、网络管理等。以下是一些常用的Linux命令以及它们的简单说明:1.文件和目录管理ls:列出目录内容ls#列出当前目录的文件和文件夹ls-l#列出文件的详细信息ls-a#列出......
  • 如何使用Docker进入容器并运行命令
    在Docker的日常管理和应用开发过程中,经常会遇到需要与容器内部进行交互的情况。无论是调试应用程序还是检查服务状态,能够有效地进入容器内部执行命令都是非常必要的。本文将详细介绍如何通过Docker命令行工具进入一个正在运行的容器,并在其中执行各种命令。Docker简介Docker是......
  • Windows 目录统计信息
    WinDirStat是适用于各种版本 MicrosoftWindows 的磁盘使用情况统计查看器和清理工具。注意:如果您正在寻找 Linux 的替代品,您正在寻找 KDirStat(在Debian衍生产品上为 apt-getinstallkdirstat 或 apt-getinstallk4dirstat)或 QDirStat,对于 MacOSX,则为 DiskInven......
  • 2024.9.23docker常用命令
    1.容器管理查看运行中的容器:dockerps查看所有容器(包括已停止的):dockerps-a启动容器:dockerstart<container_id或container_name>停止容器:dockerstop<container_id或container_name>重启容器:dockerrestart<container_id或container_name>删除......
  • 一行命令,一分钟轻松搞定SSL证书自动续期
    httpsok是一个便捷的HTTPS证书自动续签工具,专为Nginx服务器设计。已服务众多中小企业,稳定、安全、可靠。现在的网站SSL免费证书有效期只有3个月,所以就会有经常更快SSL证书的需求,如果手上需要更换的SSL证书比较多的情况下,那么这将是一个比较繁琐的过程,首先需要挨个去申......
  • vim 命令失效解决方法 输入命令无反应
     环境是centos7x86 vim显示最新版which命令vim也是有的如题命令都是有的但是无返回结果1.卸载重装yumremovevim-y2.安装yuminstallvim-y3.执行vim 报错撸提示缺库依赖搜索了一下该软件是哪个包提供的yumprovides*libgpm.so.2yum参数-h:显示......