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

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


当前回答

我认为以下命令可以帮助您:

pause 5

pause命令的语法为:pause d\\其中d表示持续时间(秒)

我使用的是Windows 7(32位),但我不知道其他的。

其他回答

我使用完全基于Windows XP功能的以下方法来延迟批处理文件:

文件DELAY.BAT

@ECHO OFF
REM DELAY seconds

REM GET ENDING SECOND
FOR /F "TOKENS=1-3 DELIMS=:." %%A IN ("%TIME%") DO SET /A H=%%A, M=1%%B%%100,     S=1%%C%%100, ENDING=(H*60+M)*60+S+%1

REM WAIT FOR SUCH A SECOND
:WAIT
FOR /F "TOKENS=1-3 DELIMS=:." %%A IN ("%TIME%") DO SET /A H=%%A, M=1%%B%%100, S=1%%C%%100, CURRENT=(H*60+M)*60+S
IF %CURRENT% LSS %ENDING% GOTO WAIT

您也可以在计算中插入日期,这样当延迟间隔超过午夜时,该方法也可以工作。

创建名为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技巧就不再有效了。

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

这应该可以做到:选择/T 5/N/D Y

将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