协慌网

登录 贡献 社区

如何在批处理文件 / cmd 中睡眠五秒钟

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

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

答案

我很惊讶没有人提到:

C:\> timeout 5

NB但是请注意(感谢丹!)是timeout 5方式:

睡在 4 到 5 秒之间的任何地方

可以通过将以下内容放入批处理文件中,反复运行该文件并计算第一echo与第二回声之间的时间差来凭经验进行验证:

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

一种技巧是(错误地)使用 ping 命令:

ping 127.0.0.1 -n 6 > nul

解释:

  • ping是发送 ping 请求的系统实用程序。在所有版本的 Windows 上都可以使用ping
  • 127.0.0.1是 localhost的 IP 地址。确保此 IP 地址始终解析,可访问并立即响应 ping。
  • -n 6指定将有 6 个 ping。每次 ping 之间有 1s 的延迟,因此,如果要延迟 5s,则需要发送 6 次 ping。
  • > nul通过ping的输出重定向到nul来抑制它的输出。

尝试选择命令。自 MSDOS 6.0 以来就已经存在,应该做到这一点。

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

可能存在的一件事是,如果用户在超时时间过去之前输入了选择字符之一。可以通过部分变通方法来掩盖这种情况 - 使用 / N 参数隐藏有效选择的列表,并且选择集中只有 1 个字符,因此用户不太可能在输入有效选择之前输入有效选择超时到期。

以下是 Windows Vista 上的帮助文本。我认为在 XP 上也是如此,但请查看 XP 计算机上的帮助文本以进行验证。

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."