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

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

sleep 10

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

我正在运行 Windows XP。

注意: 这不是 睡在批处理文件里的完全副本,因为另一个问题也是关于 python 的,而这是关于 Windows 批处理文件的。

705099 次浏览

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

ping 192.0.2.2 -n 1 -w 10000 > nul

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

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

通过在 PATH 中创建一个 sleep. bat 并使用上面的技术,您可以很容易地自己做一个 sleep 命令:

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


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

注意(2020年9月) : 192.0.2. x 地址是按照 RFC 3330保留的,所以它肯定不会存在于现实世界中。引用规格说明:

192.0.2.0/24-此块被分配为“ TEST-NET”,用于 文档和示例代码 供应商和协议中的域名 example.com 或 example.net 块中的地址不应显示在 公共互联网。

那么,sleep是否存在于你的 Windows XP 系统中呢?根据这篇文章: http://malektips.com/xp_dos_0002.htmlsleep在 WindowsXP 上是不可用的,你必须下载 Windows2003资源工具包才能得到它。

查克里特的回答也给了你另一种暂停的方式。

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

你最好定位 127.0.0.1。Windows ping 在 ping 之间暂停一秒钟,所以如果您想睡10秒钟,请使用

ping -n 11 127.0.0.1 > nul

这样你就不必担心意想不到的早期回报(比如说,没有默认路由,而且123.45.67.89立刻就被认为是无法到达的)

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

我用了这个

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

那么:

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