Windows批处理:睡眠
如何让Windows批处理脚本等待几秒钟?
sleep
和wait
似乎没有工作(无法识别的命令)。
你可以试试
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 SET
和HELP CALL
信息。
Windows 2003资源工具包有一个sleep
batch 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安装一个睡眠命令。