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

How to wait in a batch script?

本问题已经有最佳答案,请猛点这里访问。

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

1
sleep 10

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

我正在运行Windows XP。

注意:这不是在批处理文件中完全重复,因为另一个问题也是关于python,而这是关于Windows批处理文件。


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

1
ping 192.0.2.2 -n 1 -w 10000 > nul

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

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

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

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

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

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

192.0.2.0/24 - This block is assigned as"TEST-NET" for use in
documentation and example code. It is often used in conjunction with
domain names example.com or example.net in vendor and protocol
documentation. Addresses within this block should not appear on the
public Internet.


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

1
ping -n 11 127.0.0.1 > nul

这样您就不必担心意外的早期返回(例如,没有默认路由,并且立即知道123.45.67.89无法访问。)


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


我用过这个

1
2
3
4
5
6
:top
cls
type G:\empty.txt
type I:\empty.txt
timeout /T 500
goto top


关于什么:

1
2
3
4
5
6
@echo off
set wait=%1
echo waiting %wait% s
echo wscript.sleep %wait%000 > wait.vbs
wscript.exe wait.vbs
del wait.vbs


那么,你的Windows XP盒子上是否还存在sleep?根据这篇文章:http://malektips.com/xp_dos_0002.html sleep在Windows XP上不可用,您必须下载Windows 2003资源工具包才能获得它。

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

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