更好的方式在bat文件中等待几秒钟?

可能重复:
如何睡在一个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分钟的时间