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

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


当前回答

这可以通过批处理文件中的两行简单代码来完成:在%temp%文件夹中写一个临时.vbs文件,并调用它:

echo WScript.Sleep(5000) >"%temp%\sleep.vbs"
cscript "%temp%\sleep.vbs"

其他回答

我最简单的方法是:

下载Sleep.exehttp://www.sleepcmd.com/..exe文件应与您编写的程序位于同一文件夹中!

您可以使用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

您可以使用超时:

这将是可见的:超时5

这将不可见超时5>nul

我很惊讶没有人提到:

C:\> timeout 5

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

睡眠时间在4到5秒之间

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

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

用户Aacini提出的代码的改进,它具有百分之一秒的分辨率,当时间达到23:59:59,99时不会失败:

for /f "tokens=1,2,3,4 delims=:," %%A in ("%TIME%") do set /a HH=%%A, MM=1%%B-100, SS=1%%C-100, CC=1%%D-100, TBASE=((HH*60+MM)*60+SS)*100+CC

:: Example delay 1 seg.
set /a TFIN=%TBASE%+100

:ESPERAR
for /f "tokens=1,2,3,4 delims=:," %%A in ("%TIME%") do set /a HH=%%A, MM=1%%B-100, SS=1%%C-100, CC=1%%D-100, TACTUAL=((HH*60+MM)*60+SS)*100+CC

if %TACTUAL% lss %TBASE% set /a TACTUAL=%TBASE%+%TACTUAL%
if %TACTUAL% lss %TFIN% goto ESPERAR