如何使批处理文件等待几分之一秒?
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));
我想让批处理文件等待 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));