如何在批处理脚本中等待?

时间:2009-04-09 18:01:46

标签: batch-file

我正在尝试编写一个批处理脚本,并尝试在两个函数调用之间等待10秒。命令:

sleep 10

不使批处理文件等待10秒。

我正在运行Windows XP。

注意:这不是Sleeping in a batch file的完整副本,因为另一个问题也是关于python,而这是关于Windows批处理文件。

6 个答案:

答案 0 :(得分:259)

您可以ping一个肯定不存在的地址并指定所需的超时:

ping 192.0.2.2 -n 1 -w 10000 > nul

由于地址不存在,它将等待10,000毫秒(10秒)并返回。

  • -w 10000部分指定所需的超时(以毫秒为单位)。
  • -n 1部分告诉ping它应该只尝试一次(通常会尝试4次)。
  • 附加> nul部分,因此ping命令不会向屏幕输出任何内容。

您可以通过在PATH中的某处创建sleep.bat并使用上述技术轻松地自己创建睡眠命令:

rem SLEEP.BAT - sleeps by the supplied number of seconds

@ping 192.0.2.2 -n 1 -w %1000 > nul

注意:根据RFC 3330保留192.0.2.x地址,因此它在现实世界中肯定不存在。引用规范:

  

192.0.2.0/24 - 此块被指定为“TEST-NET”以供使用   文档和示例代码。它经常与之配合使用   供应商和协议中的域名example.com或example.net   文档。此块中的地址不应出现在   公共互联网。

答案 1 :(得分:134)

您最好ping 127.0.0.1 。 Windows ping在ping之间暂停一秒钟,因此如果您想要睡10秒钟,请使用

ping -n 11 127.0.0.1 > nul

这样您就不必担心意外的早期退货(例如,没有默认路线,并且立即知道123.45.67.89无法到达。)

答案 2 :(得分:122)

我实际上找到了正确的命令..它叫做超时:http://www.ss64.com/nt/timeout.html

答案 3 :(得分:44)

我用过这个

:top
cls
type G:\empty.txt
type I:\empty.txt
timeout /T 500
goto top

答案 4 :(得分:7)

怎么样:

@echo off
set wait=%1
echo waiting %wait% s
echo wscript.sleep %wait%000 > wait.vbs
wscript.exe wait.vbs
del wait.vbs

答案 5 :(得分:6)

嗯,你的Windows XP盒子上是否还存在sleep?根据这篇文章:{* 3}} sleep在Windows XP上不可用,您必须下载http://malektips.com/xp_dos_0002.html才能获得它。

Chakrit的回答也为你提供了另一种暂停的方式。

尝试从命令提示符运行sleep 10