当前位置: 移动技术网 > IT编程>网络>Dos/Bat > Windows命令行bat批处理延迟sleep方法(批处理延时)

Windows命令行bat批处理延迟sleep方法(批处理延时)

2017年12月08日  | 移动技术网IT编程  | 我要评论
windows下批处理文件没有像linux一样的sleep函数进行延时处理,这里有2种较为实用的方法实现延迟: 1、使用wscirpt的sleep功能,精度0.001秒

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_home1tnslistener
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包下载,里边就有sleep.exe
(为何不发布出来呢?)

下载地址:

有时候真的是痛恨windows下的批处理.

3、还有两种方法实现sleep功能

一种是通过连续读取系统时间,进行比较,达到一定值时退出实现睡眠功能,但该操作应耗用cpu较大,不推荐。

另一种是德国一位哥们的做法,直接用debug方法生成一个定时器程序,该方法可能破坏系统的稳定性,或容易植入病毒(使用他人代码),亦不推荐使用。

echo q | debug>nul
echo bj@jzh`0x-`/ppppppa(de(dm(do(dh(ls(lu(lx(lezrr]eeeuyrx2dx=>sleep.com
echo 0dxfp,0xx.t0p,=xtgsb4o@$?piyu wwx0gwuy wv;ovbx2gv0exgiuht6>>sleep.com
echo t}{z~~@gwkbg@oekcut`~}@mqqbsy?sehb~_phxr?@zab`lrpeyodt@cj?>>sleep.com
echo pky_jn@qekpet@ij?jysjn@rekpet@jj?jygjn@sekkjtlgunw?p@pjirz>>sleep.com
echo lfvaurq?oyltq@@?~qcool~rdu@?au?@{qoq?@}ikunwpe~fpeqfwh?vkk>>sleep.com
echo _gsqocvh{ojeoseiqrma@knefb?p??mcjnne~b?m??qhetlbgbphexh@e=>>sleep.com
echo esogwtlblk?sfu`?ldod@@k@xo?suuda?_fkj@n?kd@?ua??o}hcqoq??r>>sleep.com
echo _oqol?cla?ceu?_fu?uaq?ubd?loc?oro?uol?uod?ooi?ugl?lor@yuo?>>sleep.com
echo dsmsqswdor[bqaq?lua?_l_ounusclooulooduo?uoe@owh?uoq?djtsdm>>sleep.com
echo qtqrk@kcmsulkpcloouloofuo?hwdtqostdbntqrrdsdftlnbtm`lthkct>>sleep.com
echo @dmtkrqsoddtt~?k?ocoqp?o??gds?wow?pgatachqvnntqv_w?a?it\eh>>sleep.com
echo {zpqpkgk?jbs?fqokoh{t?jpvp@iqbdfan?ohrol?kj??pd~an?ohrod?g>>sleep.com
echo q??pgt~b??oc~?ipo?t?~u?p~cuo0x>>sleep.com
sleep.com>sleep.exe
del sleep.com

以上代码要使用批处理方式.使用 sleep.exe 10000 时间单位是毫秒

4、从移动技术网下载sleep.exe文件

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网