Windows批处理:睡眠

如何让Windows批处理脚本等待几秒钟?

sleepwait似乎没有工作(无法识别的命令)。

你可以试试

 ping -n XXX 127.0.0.1 >nul 

其中XXX是等待的秒数加1。

我不知道为什么这些命令不适合你,但你也可以尝试超时

 timeout <delay in seconds> 
 timeout /t 10 /nobreak > NUL 

/t指定以秒为单位的等待时间

/nobreak不会中断超时,如果你按下button(CTRL-C除外)

> NUL会抑制命令的输出

等待10秒钟:

 choice /T 10 /CX /DX /N 

微软有一个睡眠function,你可以直接调用。

  Usage: sleep time-to-sleep-in-seconds sleep [-m] time-to-sleep-in-milliseconds sleep [-c] commited-memory ratio (1%-100%) 

例如,您可以说睡眠1 ,以在批处理脚本中睡眠1秒钟。

国际海事组织(IMO)的Ping对于这个用例来说是一个黑客。

对于一个纯粹的cmd.exe脚本,你可以使用这段代码在几秒钟内返回当前时间。

 :gettime set hh=%time:~0,2% set mm=%time:~3,2% set ss=%time:~6,2% set cc=%time:~-2% set /A %1=hh*360000+mm*6000+ss*100+cc goto :eof 

然后你可以像这样在一个等待循环中使用它。

 :wait call :gettime wait0 :w2 call :gettime wait1 set /A waitt = wait1-wait0 if !waitt! lss %1 goto :w2 goto :eof 

把所有的东西放在一起:

 @echo off setlocal enableextensions enabledelayedexpansion call :gettime t1 echo %t1% call :wait %1 call :gettime t2 echo %t2% set /A tt = (t2-t1)/100 echo %tt% goto :eof :wait call :gettime wait0 :w2 call :gettime wait1 set /A waitt = wait1-wait0 if !waitt! lss %1 goto :w2 goto :eof :gettime set hh=%time:~0,2% set mm=%time:~3,2% set ss=%time:~6,2% set cc=%time:~-2% set /A %1=hh*360000+mm*6000+ss*100+cc goto :eof 

有关这里使用的命令的更详细的描述,请selectHELP SETHELP CALL信息。

Windows 2003资源工具包有一个sleepbatch file。 如果您移动到PowerShell ,您可以使用:

 Start-Sleep -s <time to sleep> 

或类似的东西。

我依靠JScript 。 我有一个像这样的JScript文件:

 // This is sleep.js WScript.Sleep( WScript.Arguments( 0 ) ); 

而在batch file中,我用CScript运行它(通常是%SystemRoot%\system32\cscript.exe

 rem This is the calling inside a BAT file to wait for 5 seconds cscript /nologo sleep.js 5000 

呃,Windows是呃…有趣。 这工作:

 choice /T 1 /dy > NUL 

choice提示询问是或否。 /dy使它select是的。 /t 1使之等待一秒钟,然后再打字。 > NUL南瓜输出。

我只是写了我自己的叫做Win32 Sleep API函数的睡眠 。

RJLsoftware有一个名为DelayExec.exe的小工具。 有了这个,你可以执行任何程序在批处理和Windowsregistry(最有用的… Windows /…/运行registry)延迟启动。

用法示例:

 delayexec "C:\WINDOWS\system32\notepad.exe" 10 

或作为睡眠命令:

 delayexec "nothing" 10 

我个人使用Perl一行 :

 perl -e "sleep 10;" 

等待10秒。 作为git安装的一部分,你可能已经在开发机器上安装了Perl; 如果没有,你将不得不安装它,例如,从ActiveState或草莓 ,但这是我安装的东西之一。

或者,您可以从GnuWin32安装一个睡眠命令。