在批处理中,经常需要用到“延时(等待)”,那么如何让批处理延时呢?

方法1
-
1
[方法1]
在windows vista及以上系统中,系统提供了一个“timeout”命令。优点:方便,一行命令搞定。缺点:不能在旧系统中(例如xp)使用,且延时精度较低(1秒)。
-
2
-----命令帮助↓-----
TIMEOUT [/T] timeout [/NOBREAK]
描述:
这个工具接受超时参数,等候一段指定的时间(秒)或等按任意键。它还接受一个参数,忽视按键。
参数列表:
/T timeout 指定等候的秒数。有效范围从 -1 到 99999 秒。
/NOBREAK 忽略按键并等待指定的时间。
/? 显示此帮助消息。
注意: 超时值 -1 表示无限期地等待按键。
-
3
示例1:
::下面这条命令会等待10秒,并且可以按任意键跳过等待
TIMEOUT /T 10
-
4
示例2:
::下面这条命令会等待300秒,并且只能按下CTRL+C来跳过
TIMEOUT /T 300 /NOBREAK
-
5
示例3:
::下面这条命令会持续等待,直到你按下任意按键.功能类似于pause
TIMEOUT /T -1
-
6
示例4:
::下面这条命令会持续等待,直到你按下CTRL+C按键
TIMEOUT /T -1 /NOBREAK
END
方法2
-
1
[方法2]
使用vbs的sleep方法来实现延时(等待)。优点:能在旧系统中(例如xp)使用,且延时精度较高(1毫秒)缺点:代码行数较多,3行。
-
2
示例:
-----代码↓-----
echo CreateObject("Scripting.FileSystemObject").DeleteFile(WScript.ScriptFullName) >%Temp%\Wait.vbs
echo wscript.sleep ▲ >>%Temp%\Wait.vbs
start /wait %Temp%\Wait.vbs
-----代码↑-----
注意:其中的“▲”为等待的毫秒数,1秒=1000毫秒,等待10000毫秒,即10秒。
当然,也可以使用并行符号“&”,把命令并成一行
-----代码↓-----
echo createobject("scripting.filesystemobject").deletefile(wscript.scriptfullname) >%temp%\VBScriptWait.vbs& echo wscript.sleep ▲ >>%temp%\VBScriptWait.vbs& start /wait %temp%\VBScriptWait.vbs
-----代码↑-----
效果相同
END
文章评论