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盒子上是否还存在
Chakrit的回答也为你提供了另一种停顿方式。
尝试从命令提示符运行