如何使批处理文件等待几分之一秒?

How to make a batch file wait for fractions of a second?

我想让批处理文件等待 0.5 或 0.25 秒。
我已经尝试过 timeout /t 0.5 但它不起作用。

类似于:
@echo off color a cls :top echo %random% timeout /t 0.5 echo %random% goto top

编辑:感谢大家的回答

试试这个:ping 127.0.0.1 -n 1 -w 500> nul 500 是以毫秒为单位的时间。

编辑:

正如 rojo 在评论中发布的那样,这在 250 毫秒内无法按预期工作:

ping used this way pauses a minimum of 500ms. Using any value lower than 500 still results in a half second pause

TIMEOUT 仅以整秒为增量有效。

您可以下载其他第三方 "sleep" 可执行文件。

或者,您可以在 VBScript 中使用 Sleep 方法。它接受以毫秒为单位的值。这是一个简单的示例(将其保存到 SLEEP.VBS 或您想要的任何名称):

ms = WScript.Arguments(0)
WScript.Sleep ms

然后,在你的批处理文件中像这样调用它,延迟 0.5 秒:

CSCRIPT SLEEP.VBS 500

See this question 获取一些有价值的信息。总而言之,使用 ping 暂停限制为 500 毫秒或更长。您将无法暂停 250 毫秒。最好的解决方案是使用 Windows Scripting Host -- VB Script 或 JScript。

您可以使用 batch / JScript hybrid 来避免调用外部 VBS 脚本。用 .bat 扩展名保存此示例并尝试。

@if (@CodeSection == @Batch) @then

@echo off
setlocal

for /L %%I in (10,-1,1) do (
    set /P "=%%I... "<NUL
    call :pause 250
)

echo Done.
goto :EOF

:pause <ms>
cscript /nologo /e:JScript "%~f0" "%~1"
goto :EOF

@end // end batch / begin JScript hybrid code
WSH.Sleep(WSH.Arguments(0));