Windows命令⾏bat批处理延迟sleep⽅法(批处理延时)Windows下批处理⽂件没有像Linux⼀样的Sleep函数进⾏延时处理,这⾥有2种较为实⽤的⽅法实现延迟:
1、使⽤WScirpt的sleep功能,精度0.001秒
创建vbs延迟⽂件,然后在批处理⽂件中调⽤,使⽤WScript的 sleep函数,实现sleep的效果。
实战:
1)创建⽂件sleep.vbs:
echo WScript.sleep 5000 > sleep.vbs
sleep.vbs 内容如下:
WScript.sleep 5000。
2)在批处理⽂件中调⽤,创建⽰例⽂件test.bat,内容如下:
复制代码代码如下:
sc stop OracleOraDb10g_home1TNSListenerdj
Wscript sleep.vbs
sc start OracleOraDb10g_home1TNSListener
2、使⽤ping 的定时功能,精度1秒
实战:创建⽰例⽂件test2.bat,内容如下:
复制代码代码如下:
sc stop OracleOraDb10g_home1TNSListener
ping -n 3 127.0.0.1>nul
sc start OracleOraDb10g_home1TNSListener
说明:3为ping包发送次数,可作为延迟秒数进⾏使⽤,需要延迟⼏秒就设置⼏。
>nul避免屏幕输出,将输出输⼊到空设备,因为不需要结果,仅⽤到其定时功能。
以下是其他⽹友的补充:
好好的批处理,居然没有正式的Sleep可供调⽤。有时候,确实感到很⽆趣。
1. ⽅法1:
ping 1.1.1.1来模拟
好不容易从stackoverflow上到⼀个答案(称之为答案,是因为它被⼈标注为answer),是这么实现的:
ping 1.1.1.1 -n 1 -w 60000 > nul
这个表⽰,会sleep 60秒钟。
果真如此吗?它要基于⼀个假设:1.1.1.1永远不会被⽬标机器ping通。但我却碰到了灵异事件,在某台测试机上,直接能ping通:
Pinging 1.1.1.1 with 32 bytes of data:
Reply from 1.1.1.1: bytes=32 time<1ms TTL=60
Reply from 1.1.1.1: bytes=32 time<1ms TTL=60
Reply from 1.1.1.1: bytes=32 time=6ms TTL=60
Reply from 1.1.1.1: bytes=32 time<1ms TTL=60
Ping statistics for 1.1.1.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 6ms, Average = 1ms
所以,这个⽅法是靠不住的。
2. 依然使⽤ping来模拟,
请看下边的bat:
这个就表⽰要sleep⼤概60秒钟。
当然,你也可以把wait_ext1那部分重命名⼀个单独的批处理进⾏调⽤。
3. 似乎2003还有⼀个resource kit包下载,⾥边就有
(为何不发布出来呢?)
有时候真的是痛恨Windows下的批处理.
3、还有两种⽅法实现Sleep功能
⼀种是通过连续读取系统时间,进⾏⽐较,达到⼀定值时退出实现睡眠功能,但该操作应耗⽤CPU较⼤,不推荐。
另⼀种是德国⼀位哥们的做法,直接⽤debug⽅法⽣成⼀个定时器程序,该⽅法可能破坏系统的稳定性,或容易植⼊病毒(使⽤他⼈代码),亦不推荐使⽤。
echo q | debug>nul
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>sleep
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>sleep
echo T}{z~~@GwkBG@OEKcUt`~}@MqqBsy?seHB~_Phxr?@zAB`LrPEyoDt@Cj?>>sleep
echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>sleep
echo LFvAURQ?OYLTQ@@?~QCoOL~RDU@?aU?@{QOq?@}IKuNWpe~FpeQFwH?Vkk>>sleep
echo _GSqoCvH{OjeOSeIQRmA@KnEFB?p??mcjNne~B?M??QhetLBgBPHexh@e=>>sleep
echo EsOgwTLbLK?sFU`?LDOD@@K@xO?SUudA?_FKJ@N?KD@?UA??O}HCQOQ??R>>sleep
echo _OQOL?CLA?CEU?_FU?UAQ?UBD?LOC?ORO?UOL?UOD?OOI?UgL?LOR@YUO?>>sleep
echo dsmSQswDOR[BQAQ?LUA?_L_oUNUScLOOuLOODUO?UOE@OwH?UOQ?DJTSDM>>sleep
echo QTqrK@kcmSULkPcLOOuLOOFUO?hwDTqOsTdbnTQrrDsdFTlnBTm`lThKcT>>sleep
echo @dmTkRQSoddTT~?K?OCOQp?o??Gds?wOw?PGAtaCHQvNntQv_w?A?it\EH>>sleep
echo {zpQpKGk?Jbs?FqokOH{T?jPvP@IQBDFAN?OHROL?Kj??pd~aN?OHROd?G>>sleep
echo Q??PGT~B??OC~?ipO?T?~U?p~cUo0x>>sleep
sleep&
del sleep
以上代码要使⽤批处理⽅式.使⽤ 10000 时间单位是毫秒
4、从下载⽂件