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

所属分类: 脚本专栏 / DOS/BAT 阅读数: 1460
收藏 0 赞 0 分享

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
(为何不发布出来呢?)

下载地址:https://www.jb51.net/softs/2466.html

有时候真的是痛恨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文件

https://www.jb51.net/softs/2466.html

更多精彩内容其他人还在看

mshta命令用法示例

这篇文章主要介绍了mshta命令用法示例 ,需要的朋友可以参考下
收藏 0 赞 0 分享

使用BAT批处理执行sql语句的代码

有时候需要执行一些Sql语句时,不想开企业管理器,或者是发给客户执行但那边又不懂代码,这时就可以用下面方法
收藏 0 赞 0 分享

批处理的图形界面实现方法小结

其实所谓的图形界面就是通过bat通过调用mshta来实现的一些对话框效果,这里特整理下, 方便需要的朋友
收藏 0 赞 0 分享

批处理中的echo命令图文详解

这篇文章主要介绍了批处理中的echo命令图文详解,里面都附有详细的图片执行效果,非常不错需要的朋友可以参考下
收藏 0 赞 0 分享

批处理中常用命令介绍(Echo、rem、goto、call、pause、if、for)

这篇文章主要介绍了批处理中常用命令介绍,包括Echo、rem、goto、call、pause、if、for,学习bat必备的啊
收藏 0 赞 0 分享

改变cmd命令提示符颜色的3个小技巧

这篇文章主要介绍了改变cmd命令提示符颜色的3个小技巧,推荐使用第三个技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

使用BAT批处理在RAR压缩文件中批量添加文件的方法

这篇文章主要介绍了使用BAT批处理在RAR压缩文件中批量添加文件的方法,可以用在很多地方,例如做下载加的朋友,想要加个网站快捷方式在以前压好的压缩文件中等,需要的朋友可以参考下
收藏 0 赞 0 分享

bat 传递超过10个参数的情况

批处理文件中可引用的参数为%0~%9, %0是指批处理文件的本身,也可以说是一个外部命令;%1~%9是批处理参数,也称形参;而替换形参的实参若超过了批处理文件中所规定数值(9个)且想在批处理文件中应用这些实参的话,shift命令可以帮你实现
收藏 0 赞 0 分享

BAT 参数去引号(各种去引号的奇葩方式)

这篇文章主要介绍了BAT 参数去引号,各种去引号的奇葩方式,需要的朋友可以参考下
收藏 0 赞 0 分享

使用批处理命令设置windows系统的ip地址和dns附图

这篇文章主要介绍了如何使用批处理命令设置windows系统的ip地址和dns,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多