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_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来模拟
好不容易从*上找到一个答案(称之为答案,是因为它被人标注为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文件
推荐阅读
-
写一个bat批处理文件启动windows进程和延时关闭的代码
-
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
-
Windows下用命令行修改IP地址的方法详解(附批处理文件)
-
dos、bat批处理延时执行命令的两种方法
-
Windows运行bat批处理文件时隐藏cmd命令提示符窗口的方法
-
Windows命令行bat批处理延迟sleep方法(批处理延时)
-
利用bat批处理程序通过DOS命令行删除所有的空文件夹的方法
-
批处理bat 延时执行命令的两种方法
-
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)_php实例
-
写一个bat批处理文件启动windows进程和延时关闭的代码