windows - 在Windows命令行( 或者DOS) 如何睡眠5秒?

Windows的截图工具可以捕获屏幕,但是,有时我想在5秒后捕捉画面,例如通过摄像头显示图像,(例如,运行脚本,对相机微笑)。

在ruby中我可以这么做


sleep 3
system('c:/windows/system32/SnippingTool.exe')

但是,并非所有计算机都有ruby,如何在.bat文件中执行该操作? (在大多数电脑上可运行的截图工具)。

问题是.bat文件中没有sleep "睡眠"

时间:

我看到的一个hack技巧是使用ping命令,尝试ping一个无效的IP地址 :


ping 1.1.1.1 -n 1 -w 3000 > nul

1.1.1.1是无效的IP地址,无法到达,
-n 1仅尝试连接一次,
-w 3000等待3秒回复,
nul是吞噬输出。

我很惊讶没有人提到过:

 
C:> timeout 5

 

在4和5秒之间休眠

通过将下面的内容放入批处理文件,并重复运行,并计算第一和第二个echo s:之间的时间差,


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


rem *** HACK ALERT: Sleep for 5 seconds ***
ping -n 5 127.0.0.1 > nul
rem ***************************************

尝试Choice 命令,在MSDOS 6.0它已经有了,应该能做到。

使用/T参数指定超时以秒为单位,/D参数指定默认选择和忽略选择的选项。


C:>CHOICE /?

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

Description:
 This tool allows users to select one item from a list
 of choices and returns the index of the selected choice.

Parameter List:
 /C choices Specifies the list of choices to be created.
 Default list is "YN".

 /N Hides the list of choices in the prompt.
 The message before the prompt is displayed
 and the choices are still enabled.

 /CS Enables case-sensitive choices to be selected.
 By default, the utility is case-insensitive.

 /T timeout The number of seconds to pause before a default
 choice is made. Acceptable values are from 0 to
 9999. If 0 is specified, there will be no pause
 and the default choice is selected.

 /D choice Specifies the default choice after nnnn seconds.
 Character must be in the set of choices specified
 by /C option and must also specify nnnn with /T.

 /M text Specifies the message to be displayed before
 the prompt. If not specified, the utility
 displays only a prompt.

 /? Displays this help message.

 NOTE:
 The ERRORLEVEL environment variable is set to the index of the
 key that was selected from the set of choices. The first choice
 listed returns a value of 1, the second a value of 2, and so on.
 If the user presses a key that is not a valid choice, the tool
 sounds a warning beep. If tool detects an error condition,
 it returns an ERRORLEVEL value of 255. If the user presses
 CTRL+BREAK or CTRL+C, the tool returns an ERRORLEVEL value
 of 0. When you use ERRORLEVEL parameters in a batch program, list
 them in decreasing order.

Examples:
 CHOICE /?
 CHOICE /C YNC /M "Press Y for Yes, N for No or C for Cancel."
 CHOICE /T 10 /C ync /CS /D y
 CHOICE /C ab /M "Select a for option 1 and b for option 2."
 CHOICE /C ab /N /M "Select a for option 1 and b for option 2."

你可以使用timeout

Timeout/t 1> nul

就像在 1 secound中暂停一样,你可以将limed带到 amost 100.000 ( 99.999 ) secounds 。 如果你连接到互联网,最好的salution是:

ping 1.1.1.1. -n 1 -w 1000> nul

当你在milisecounds中进行计数时,一个secoud是 1000 milisecounds 。 但是ping命令是一个litle问题,它在离线机器上的工作方式不一样。 问题是机器因为离线而变得混乱,它想ping一个 website/server/host/ip,但它不能。 所以我会推荐超时。 祝你好运

我最终使用sleep.exe来自http://sourceforge.net/projects/unxutils,这很好,因为它不需要安装,也很小。


尝试使用choice


<Target Name="TestCmd">
 <Exec Command="choice /C YN /D Y /t 5 " />
</Target>

结果:


TestCmd:
 choice /C YN /D Y /t 5

EXEC : error : The file is either empty or does not contain the valid choices. [test.proj]
 [Y,N]?
C:test.proj(5,9): error MSB3073: The command "choice /C YN /D Y /t 5 " exited with code 255.


尝试使用timeout


<Target Name="TestCmd">
 <Exec Command="timeout /t 5 " />
</Target>

结果:


TestCmd:
 timeout /t 5
EXEC : error : Input redirection is not supported, exiting the process immediately. [test.proj]
C:test.proj(5,7): error MSB3073: The command "timeout /t 5 " exited with code 1.


除:

我正在用 <Exec Command="sleep 2 & dbghost.exe" /> 因为我正在并行执行dbghost.exe,并且它基于当前时代时间创建了临时文件/数据库,我最初尝试使用MSBuild扩展包Thread.Sleep命令,但是,看起来它运行的睡眠任务很好,然后在所有线程中同时启动<exec>任务当然dbghost.exe会有冲突,到目前为止,使用sleep.exe似乎更可靠。

如果你的系统中有PowerShell,你可以执行以下命令:


powershell -command "Start-Sleep -s 5"



powershell -command "$sleepUntil = [DateTime]::Parse('%date% %time%').AddSeconds(5); $sleepDuration = $sleepUntil.Subtract((get-date)).TotalMilliseconds; start-sleep -m $sleepDuration"

因此只要PowerShell花费的时间比睡眠持续时间少,这种方法就会工作(在我的机器上大约600ms )。

两个答案:

首先,要在批处理文件中延迟,只需使用人们提出的所有愚钝方法:


timeout/t <TimeoutInSeconds> [/nobreak] 

http://technet.microsoft.com/en-us/library/cc754891.aspx

其次,值得一提的,虽然它可能不是你想要的,使用内置 Windows 修剪工具,可以触发一个剪不使用鼠标。 运行碎片工具,逃避当前的剪断,但离开工具运行,点击控制+屏幕打印当你想要剪断发生。 这不应该妨碍你试图剪切的任何内容。

我们不能做 waitfor/T 180

waitfor 命令应该在 Windows 操作系统之后在Win95之后

在过去我下载了一个名为 sleep的可执行文件,它将在你将它放入路径后在 命令行 上工作。

例如: sleep shutdown -r -f/m yourmachine neah关机有-t选项

但这里表单要求至少有 30个字符。。

...