Windows的Snipping工具可以捕捉屏幕,但有时我想在五秒钟后捕捉屏幕,例如拍摄网络摄像头显示的图像。(例如,运行脚本并对着镜头微笑。)

如何在批处理文件中休眠5秒?


当前回答

您可以使用VBScript,例如文件myscript.vbs:

set wsobject = wscript.createobject("wscript.shell")

do while 1=1
    wsobject.run "SnippingTool.exe",0,TRUE
    wscript.sleep 3000
loop

批处理文件:

cscript myscript.vbs %1

其他回答

如果系统上有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毫秒)。

我很惊讶没有人提到:

C:\> timeout 5

注意:但是,请注意(谢谢Dan!)超时5意味着:

睡眠时间在4到5秒之间

这可以通过将以下内容放入批处理文件,重复运行并计算第一次和第二次回声之间的时间差来进行经验验证:

@echo off
echo %time%
timeout 5 > NUL
echo %time%

下面的黑客让你睡5秒钟

ping -n 6 127.0.0.1 > nul

由于ping在两次ping之间等待一秒钟,因此您必须指定一次以上的ping。

超时/t 1>nul

就像在1秒内暂停一样,你可以将时间延长到近100.000(99.999)秒。如果您连接到互联网,最好的解决方案是:

平1.1.1.1-n 1-w 1000>无

当你ping时,你的计数单位是毫秒,所以一秒钟就是1000毫秒。但是ping命令有点可疑,它在脱机机器上的工作方式不同。问题是,由于机器处于离线状态,它会感到困惑,它想ping一个网站/服务器/主机/ip,但它不能。所以我建议超时。祝你好运

您可以使用超时:

这将是可见的:超时5

这将不可见超时5>nul