可能重复:
如何睡在一个batch file?
这里有一个哈希的方法来暂停在batch file中的第二个:
PING 400.500.600.700 > NUL
我GOOGLE了,但我不知道有更好的..任何想法? 🙂
您可以使用内置select命令的“默认选项”和“超时”选项来创build延迟。
@echo off echo Hi, I'm doing some stuff echo OK, now I need to take a breather for 5 seconds... choice /dy /t 5 > nul echo Times up! Here I go again...
正确的方法是使用Windows 2000中引入的timeout命令。
等待30秒:
timeout /t 30
如果用户点击任何键,超时将被中断。 但是,该命令还接受可选开关/nobreak ,除了明确的CTRL-C之外,它可以有效地忽略用户可能按下的任何内容:
timeout /t 30 /nobreak
此外,如果您不希望命令在屏幕上打印倒数,您可以将其输出redirect到NUL :
timeout /t 30 /nobreak > NUL
@echo off echo It is time for liftoff. timeout /t 5 echo Commencing crash sequence. timeout /t 5
打一个关键将倒数倒计时是唯一的缺点。
这是我一直使用的替代sleep.exe ,
@ping -n 1 -w 1000 0.0.0.1 > NUL
更改-nx等待(大致) x秒。
显然 Windows资源工具包中有睡眠命令。 其他网站也build议使用select…..
带上定时器的CHOICE命令可以很好地工作…
CHOICE / C:x / T:x,10> NUL
还有“程序”,你可以像WAIT和SLEEP等运行。
希望这可以帮助。
ping一个(上面)是一个很好的 – 但只有连接到networking才能正常工作。
下面是一些会延迟的脚本:
@echoclosures
set / secondsend =%TIME:〜6,2%+ 10
如果%secondsend%GTR 59 set / a secondsend = secondsend-60
:在这儿等着
如果%TIME:〜6,2%NEQ%secondsend%转到等待
这会在9-10秒之间暂停(由于使用TIME命令,第一秒钟不准确,在开始之前可能会过一秒钟)。
如果通过设置“secondsend”到当前秒钟的pc时钟,然后加10(延迟)。 如果它大于59,那么60分钟,因为它包裹到下一分钟。 然后有一个循环检查当前秒与'secondsend – 一旦匹配脚本继续。
如果你想延迟不同的时间2-59,那么改变第二行的10(我说2-59,因为第一秒可能不是一秒,所以2可以说,例如1.2秒)。
对不起,这是如此之长,但认为我会解释如何工作。
我刚刚在C#中写了一个简单的exe文件。 只需使用statis System.Threading.Sleep,并采取命令行参数并将其转换为整数。
花了5分钟的时间