Windows的Snipping工具可以捕捉屏幕,但有时我想在五秒钟后捕捉屏幕,例如拍摄网络摄像头显示的图像。(例如,运行脚本并对着镜头微笑。)
如何在批处理文件中休眠5秒?
Windows的Snipping工具可以捕捉屏幕,但有时我想在五秒钟后捕捉屏幕,例如拍摄网络摄像头显示的图像。(例如,运行脚本并对着镜头微笑。)
如何在批处理文件中休眠5秒?
当前回答
如果系统上有PowerShell,则只需执行以下命令:
powershell -command "Start-Sleep -s 5"
编辑:人们提出了一个问题,即与您尝试等待的时间相比,powershell启动所需的时间非常长。如果等待时间的准确性很重要(即一秒或两秒的额外延迟是不可接受的),您可以使用此方法:
powershell -command "$sleepUntil = [DateTime]::Parse('%date% %time%').AddSeconds(5); $sleepDuration = $sleepUntil.Subtract((get-date)).TotalMilliseconds; start-sleep -m $sleepDuration"
这会占用发出windows命令的时间,而powershell脚本将休眠到该时间后的5秒。因此,只要powershell的启动时间比睡眠时间短,这种方法就会奏效(在我的机器上大约是600毫秒)。
其他回答
您可以使用超时:
这将是可见的:超时5
这将不可见超时5>nul
创建名为sleep.cmd的cmd文件:
REM Usage: SLEEP Time_in_MiliSECONDS
@ECHO off
ping 1.0.0.0 -n 1 -w %1 > nul
将sleep.cmd复制到c:\windows\system32
用法:
sleep 500
睡眠0.5秒。以毫秒为单位的参数一旦复制到System32,就可以在任何地方使用。
编辑:你还应该注意,如果机器没有连接到网络(比如你在地铁中使用的便携式设备),ping技巧就不再有效了。
超时/t 1>nul
就像在1秒内暂停一样,你可以将时间延长到近100.000(99.999)秒。如果您连接到互联网,最好的解决方案是:
平1.1.1.1-n 1-w 1000>无
当你ping时,你的计数单位是毫秒,所以一秒钟就是1000毫秒。但是ping命令有点可疑,它在脱机机器上的工作方式不同。问题是,由于机器处于离线状态,它会感到困惑,它想ping一个网站/服务器/主机/ip,但它不能。所以我建议超时。祝你好运
我编写了一个powerbasic程序wait.exe,在批处理文件中向它传递一个毫秒参数
wait 3000
system('c:/windows/system32/SnippingTool.exe')
EXE的代码:
FUNCTION PBMAIN()
c$ = Command$
s! = Val(c$)*1000
Sleep s!
END FUNCTION
我很惊讶没有人提到:
C:\> timeout 5
注意:但是,请注意(谢谢Dan!)超时5意味着:
睡眠时间在4到5秒之间
这可以通过将以下内容放入批处理文件,重复运行并计算第一次和第二次回声之间的时间差来进行经验验证:
@echo off
echo %time%
timeout 5 > NUL
echo %time%