CMD脚本无需启动子进程实现睡眠的非常规解决方案求助
最优解决方案(适用于Windows 10及以上系统)
Windows 10及更高版本的cmd自带的内置pause命令支持超时参数,属于当前cmd进程的内置逻辑,完全不会产生子进程,资源占用趋近于0,完美符合要求:
pause /T 5 /NOBREAK > nul
参数说明:
/T 5:指定等待时长为5秒,可按需调整为5~7之间的整数/NOBREAK:禁止用户通过按键打断等待,只能等计时结束> nul:屏蔽命令的默认提示输出,不会在控制台打印任何内容
兼容旧版Windows的低占用方案
如果需要适配Windows 7等不支持pause /T参数的旧系统,可以使用cmd内置的时间判断逻辑实现延迟,只用到set、if、goto这些纯内置命令,不会产生子进程,短延迟场景下CPU占用极低:
@echo off :: 设置需要延迟的秒数,这里设为5 set "delay_sec=5" :: 计算结束时间秒数 set /a "end_time=%time:~6,2% + %delay_sec%" if %end_time% geq 60 set /a end_time-=60 :wait_loop set "current_sec=%time:~6,2%" :: 补全前导零避免数字判断错误 if "%current_sec:~0,1%"==" " set "current_sec=0%current_sec:~1%" if %current_sec% lss %end_time% goto wait_loop
如果需要更精准的跨小时/跨天计时,可扩展时间判断逻辑,整体依然不会产生任何子进程。
内容的提问来源于stack exchange,提问作者J Doe
相关产品推荐
相关产品推荐

