标题: [其他] 批处理延迟时间的方法有几种? [打印本页]
作者: novaa 时间: 2007-11-30 19:10 标题: 批处理延迟时间的方法有几种?
我知道的是使用ping 和 使用 循环(for /l %%a in (1 1 500) do set /p=<nul))
作者: smilediao 时间: 2007-11-30 20:01
还可以使用wscript.sleep
例如延时5秒
wscript.sleep 5000
就可以了。
作者: youxi01 时间: 2007-12-9 08:36 标题: 收集整理的各种延时方法
1、利用ping命令实现延时,方法巧妙而且可以控制,但精度不高。
如:ping -n 3 127.0.0.1>nul大约可以停顿2秒
-n后的数字是发送包的数目,为暂停秒数加一。此法每秒有0.5%的偏差,时间精度为1秒。
2、用vbs脚本中的sleep实现,样本代码如下:
以上程序代码可以实现暂停2秒,2秒过后回显OK!- @echo off
- echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs
- Delay.vbs 2
- del Delay.vbs
- echo OK!
复制代码
3、利用“死”循环:设定一个时间差,如果当前时间与设定时间之差不大于设定之时间差,则不退出该循环,从而达到延时的目的。样本代码:- @echo off
- set /a Start=%time:~6,2%
- :ProDelay
- set /a Now=%time:~6,2%
- set /a Diff=%Now%-%Start%
- rem 以下这一句可以防止秒数从59跳到1时产生的错误。
- if %Diff% lss 0 set /a Diff=%Diff%+60
- if %Diff% leq 2 goto :ProDelay
- echo ok!
复制代码
4、利用at命令。不过此方法与其说是延时,还不如说成定时的好,而且还要开启相应服务。
5、最精确的延时方法:sleep.exe- @echo off
- 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
- echo wait 2 seconds:
- sleep.exe 2000
复制代码
6、msg- @echo off
- msg * /time:2 /w "正在延时,点确定可以取消延时!"
复制代码
7、通过循环命令来达到延时:- @echo off
- :TimeDelay 1000
- pause>nul
- exit
- :TimeDelay 次数
- for /l %%i in (1 1 %1) do ver>nul
- goto :eof
复制代码
作者: tcl 时间: 2008-2-13 16:49
这个是不是要用到sleep.exe这个文件?是Windows自带的吗?
还有前面的一堆字母不知是什么意思哟?
[ 本帖最后由 tcl 于 2008-2-13 16:52 编辑 ]
作者: heiing 时间: 2008-2-14 14:56
本帖最后由 pcl_test 于 2016-8-14 10:49 编辑
回复 3# youxi01
它说sleep.exe不是有效的Win 32程序
作者: 小勇12 时间: 2008-7-4 21:50
延时还可以用
choice
choice /t 2 /c yn /d y /n
作者: yongyue258 时间: 2008-9-11 22:31
看不明白的咧。还要继续深入学习。
作者: lhjoanna 时间: 2008-11-5 02:15 标题: 一点改进~~~
冒昧讲一下,youxi01第三种利用“死循环”的方法,是不是只能延迟在1分钟以内,并且精确度为1秒吧?还有一个小bug,就是在运行是会出现数字识别错误的问题,我想大概是截取的两位秒数有可能出现01,02,03...吧?
系统时间的格式为 1:49:46.26(注:前面的1之前有一空格),是精确到10毫秒的,所以利用死循环也可以精确到10毫秒。- @echo off
- :begin
- echo ===========================
- set /p delay=请输入需要延迟的毫秒数:
- set TotalTime=0
- set NowTime=%time%
- echo 程序开始时间:%NowTime%
- :_delay
- set /a minute1=1%NowTime:~3,2%-100
- set /a second1=1%NowTime:~-5,2%%NowTime:~-2%0-100000
- set NowTime=%time%
- set /a minute2=1%NowTime:~3,2%-100
- set /a second2=1%NowTime:~-5,2%%NowTime:~-2%0-100000
- set /a TotalTime+=(minute2-minute1+60)%%60*60000+second2-second1
- if %TotalTime% lss %delay% goto _delay
- echo 程序结束时间:%time%
- echo 设定延迟时间:%delay%毫秒
- echo 实际延迟时间:%TotalTime%毫秒
- goto begin
复制代码
这样可以精确到10毫秒,一点想法,有什么错误欢迎大家指出。
作者: firewolf85 时间: 2008-12-9 14:54
不建议用死循环的办法,和其他编程一样,这种循环的办法都会消耗大量的系统资源,支持环保拒绝浪费
作者: qqha001 时间: 2008-12-10 09:52
3楼介绍的方法中,第三个方法 请解释一下这句的意思set /a Start=%time:~6,2%。谢谢。%time:~6,2% 这里看不懂。
作者: zjw767676 时间: 2009-2-11 21:14 标题: 回复 10楼 的帖子
echo %time%
::显示时间为 21:10:12.23
echo %time:~6,-2%
::显示为 12.(意思是去掉前面的6个字符,再舍去后面两个,显示剩下的)
要显示秒数要%time:~6,3%把数字后面的点也去掉!
[ 本帖最后由 zjw767676 于 2009-2-11 21:18 编辑 ]
作者: zjw767676 时间: 2009-2-11 21:20
晕了!怎么编辑不了啊?
应该是%time:~6,-3%
作者: Batcher 时间: 2009-2-11 21:40 标题: 回复 12楼 的帖子
编辑不了?有报错信息不?
作者: zjw767676 时间: 2009-2-16 20:18 标题: 回复 13楼 的帖子
没有错误提示!改了之后点编辑帖子按钮,显示出来的还是原样!!!
作者: 二手普桑 时间: 2009-3-17 20:54
本帖最后由 pcl_test 于 2016-8-14 10:50 编辑
回复 3# youxi01
运行后产生一个sleep.exe 是什么?
作者: freeback 时间: 2009-3-22 17:01
在sleep.exe中如何使用?也应该一起发来
作者: 5810239q 时间: 2009-3-27 20:14
先记住常用的,有难度的慢慢来
作者: Batcher 时间: 2009-3-27 20:16 标题: 回复 17楼 的帖子
3楼不是说了么?再仔细看看吧。
作者: 5566ljlj 时间: 2009-11-6 16:18
那个SLEEP.EXE好像确实不能运行
作者: wc726842270 时间: 2010-12-30 18:33
利用msg的方法真是没见过,不过倒是对循环延时很期待。
作者: dostt2008 时间: 2016-8-14 08:42
本帖最后由 dostt2008 于 2016-8-14 08:45 编辑
批处理的过程 运行这三条命令.应怎么设
start a.exe
start b.exe 延时大于随机60分钟而小于120分钟执行
start c.exe
(start c.exe 不要等待 随机60分钟而小于120分钟执行)
如何编呢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |