在 bat 文件中等待几秒钟的更好方法?

Sre*_*kel 14 windows batch-file

可能的重复:
如何在批处理文件中休眠?

这是在批处理文件中暂停一秒钟的 haxxorish 方式:

PING 400.500.600.700 > NUL
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索过,但我不确定有没有更好的……有什么想法吗?:)

Mas*_*imo 31

执行此操作的正确方法是使用timeoutWindows 2000 中引入的命令。

等待 30 秒:

timeout /t 30
Run Code Online (Sandbox Code Playgroud)

如果用户按下任何键,超时将被中断;然而,该命令也接受可选的 switch /nobreak,它有效地忽略用户可能按下的任何东西,除了明确的CTRL-C

timeout /t 30 /nobreak
Run Code Online (Sandbox Code Playgroud)

此外,如果您不希望该命令在屏幕上打印其倒计时,您可以将其输出重定向到NUL

timeout /t 30 /nobreak > NUL
Run Code Online (Sandbox Code Playgroud)


Tha*_*Guy 12

您可以使用内置选择命令的“默认选择”和“超时”选项来创建延迟。

@echo off
echo Hi, I'm doing some stuff
echo OK, now I need to take a breather for 5 seconds...
choice /d y /t 5 > nul
echo Times up! Here I go again...
Run Code Online (Sandbox Code Playgroud)

  • 应当注意,虽然选择命令等待输入5秒,但定时器每次按下键时都会重置。因此,您的批处理文件可能永远不会退出此选择步骤。因此也不可能保证例程只等待 5 秒——因为按键可能会更长。 (6认同)
  • `timeout` 也只能从 Vista 开始使用。 (4认同)
  • 抱歉,投票否决,但这只是另一个麻烦,而“超时”正是为此目的而存在的。 (3认同)
  • @Joey,该命令实际上是在 Windows 2000 中引入的。 (3认同)
  • 一开始我以为你错了。我正在使用 Vista 并且“选择”工作得很好,但经过进一步调查,似乎 2000/XP/2003 默认没有它。出于某种原因,他们将它带回了 Vista/2008。 (2认同)