我正在尝试编写一个批处理脚本,并且想要在两个函数调用之间等待10秒。命令如下:
sleep 10
不会让批处理文件等待10秒钟。我正在运行Windows XP。
注意:这不是Sleeping in a batch file的完全重复,因为另一个问题还涉及Python,而这个问题是关于Windows批处理文件的。
我正在尝试编写一个批处理脚本,并且想要在两个函数调用之间等待10秒。命令如下:
sleep 10
不会让批处理文件等待10秒钟。您可以ping一个不存在的地址并指定所需的超时时间:
ping 192.0.2.2 -n 1 -w 10000 > nul
由于地址不存在,它会等待10000毫秒(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月):根据RFC 3330,192.0.2.x地址是保留地址,因此在现实世界中绝对不存在。从规范中引用:
192.0.2.0/24 - 这个地址块被指定为“TEST-NET”,用于文档和示例代码。它通常与域名example.com或example.net一起在供应商和协议文档中使用。此地址块内的地址不应出现在公共互联网上。
ping
命令的响应为:PING: transmit failed. General failure.
可能是因为我处于 10.x.x.x 的网段内。 - huysentruitwping 0.0.0.0 -n 1 -w 10000 > nul
,直到Windows 10,在没有任何等待的情况下立即返回此特定IP地址。@ping 1.0.0.0 -n 1 -w 3000 > nul
可以工作。 - Vlastimil Ovčáčík你最好ping一下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
timeout
命令在 Windows XP 上不可用,但在 Windows 2003 和 Windows 7 上可以正常工作。 - Susam Pal怎么样:
@echo off
set wait=%1
echo waiting %wait% s
echo wscript.sleep %wait%000 > wait.vbs
wscript.exe wait.vbs
del wait.vbs
<1000ms
的延迟也非常准确的解决方案。 - Lynn在您的Windows XP机器上,sleep
命令是否存在?根据这篇文章:http://malektips.com/xp_dos_0002.html,sleep
在Windows XP上不可用,您需要下载Windows 2003资源工具包才能获取它。
另外,Chakrit的答案也给出了另一种暂停的方法。
尝试从命令提示符中运行sleep 10
。