当前位置: 首页 > news >正文

在Windows批处理程序中实现延时功能

方法1:使用PowerShell

@echo off:: 使用 PowerShell 的 Start-Sleep 命令来实现精确延时
powershell -command "Start-Sleep -Milliseconds 3000"echo Delay complete.

不过,通常Win7专业版和旗舰版中都会默认安装了PowerShell,但是标准版和家庭版中就没有安装,因此当你碰到Win7系统里没有PowerShell工具时,只能进行手动添加了。具体安装方法请自行百度,本文的重点不在这个。

方法2:ping -n 3 127.1 >nul

实现原理:使用 ping 命令,它会发送网络请求以检查主机的连通性。在这个情况下,-n 3 表示发送3个网络请求,127.1 是本地主机地址,>nul 表示将输出重定向到空设备,即不显示在控制台上。这个命令实际上发送3个网络请求到本地主机,但由于目标地址是本地的回环地址,所以不会有实际网络活动。

但是:受实际网络结构的影响,这个延时功能可能并不理想,有时候只延时了2秒,有时候会超过10秒钟。

方法3:choice /t 3 /d y /n >nul

它在 Windows 中等待用户在一段时间内做出选择。在这个情况下,/t 3 表示等待3秒,/d y 表示默认选择"Y"(Yes),/n 表示不显示选择提示信息,>nul 表示将输出重定向到空设备,即不显示在控制台上。这个命令实际上等待3秒钟,并假定用户选择"Y"(Yes)。

方法4:自己写个函数

@echo off
setlocal enabledelayedexpansionREM 定义函数:精确延时
:preciseDelay
setlocal
set "targetTime=%~1"REM 获取当前时间的毫秒表示
for /f "tokens=1-4 delims=:." %%a in ("!time!") do (set /a "startMS=(((%%a*60+1%%b %% 100)*60+1%%c %% 100)*1000+1%%d %% 1000)"
)REM 循环检查时间差
:loop
set "currentTime=!time!"
for /f "tokens=1-4 delims=:." %%a in ("!currentTime!") do (set /a "currentMS=(((%%a*60+1%%b %% 100)*60+1%%c %% 100)*1000+1%%d %% 1000)"
)set /a "diff=currentMS-startMS"
if !diff! lss %targetTime% (goto loop
)endlocal
exit /b
REM 函数结束REM 调用示例
echo "Start"
call :preciseDelay 3000
echo "End"

http://www.lryc.cn/news/114411.html

相关文章:

  • Java基础入门篇——Java变量类型的转换和运算符(七)
  • 20230807通过ffmpeg将DTS编码的AUDIO音频转换为AAC编码
  • 一生一芯1——windows与Ubuntu双系统安装
  • Linux下的CGI服务器
  • 后端开发3.Fastdfs的搭建
  • 目标检测与跟踪 (3)- TensorRTYOLO V8性能优化与部署测试
  • SAS-数据集SQL垂直(纵向)合并
  • SpringBoot3 整合Prometheus + Grafana
  • Python实现GA遗传算法优化LightGBM回归模型(LGBMRegressor算法)项目实战
  • 【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】
  • 资深测试老鸟整理,性能测试-常见调优详细,卷起来...
  • 【第五章 flutter学习之flutter进阶组件-上篇】
  • 鸿蒙边缘计算网关正式开售
  • Bytebase 2.5.0 - VCS 集成支持 Azure DevOps,支持达梦数据库
  • tomcat通过systemctl启动时报错Cannot find /usr/local/tomcat/bin/setclasspath.sh
  • Django架构图
  • vue- 创建wms-web项目
  • 集成学习:机器学习模型如何“博采众长”
  • 排序算法(二)
  • CVPR 2023 | 无监督深度概率方法在部分点云配准中的应用
  • HTTP隧道识别与防御:机器学习的解决方案
  • 【MMU】认识 MMU 及内存映射的流程
  • Clion开发Stm32之存储模块(W25Q64)驱动编写
  • SpringBoot动态切换数据源
  • [C++项目] Boost文档 站内搜索引擎(4): 搜索的相关接口的实现、线程安全的单例index接口、cppjieba分词库的使用、综合调试...
  • SAP ABAP元素域值描述通过函数(DD_DOMVALUE_TEXT_GET)获取
  • 原型模式与享元模式:提升系统性能的利器
  • uniapp封装手写签名
  • 掌握 JVM 调优命令
  • 扩增子分析流程——Lotus2: 一行命令完成所有分析