批处理脚本中如何实现可中断的睡眠功能?
批处理脚本中如何实现可中断的睡眠功能?
嘿,这个需求太真实了!之前我也踩过timeout /t 300不能随时中断的坑,也试过每秒跑一次小进程的笨办法,那资源占用看着都难受。不用转PowerShell,批处理本身就有完美的解决方案——用choice命令!
choice命令本来是用来做交互式选择的,但它的超时参数刚好能用来实现可中断的延迟,而且全程只启动一个进程,完全没有频繁创建进程的问题。
直接给你能用的代码:
@echo off echo 正在等待300秒,按任意键可立即继续... choice /t 300 /d Y /n >nul
给你拆解一下这个命令的关键参数:
/t 300:设置超时时间为300秒(也就是你原来需要的5分钟)/d Y:超时后自动选择默认选项Y,不用手动操作/n:不显示选项提示(比如[Y]这种,让输出更干净)>nul:把命令的输出重定向到空设备,避免多余的内容显示在屏幕上
用这个方法的话,你随时按任意键就能立即结束等待,不用熬那2.5分钟;而且整个等待过程只有一个choice进程在运行,资源占用极低,比你之前循环跑timeout的方案靠谱多了。
备注:内容来源于stack exchange,提问作者matteyas
相关产品推荐
相关产品推荐

