中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理延时还有什么精巧点的技巧吗?
<<   [1] [2] [3] [4] [5]  >>   >
作者:
标题: 批处理延时还有什么精巧点的技巧吗? 上一主题 | 下一主题
nvflash
初级用户





积分 126
发帖 38
注册 2006-9-26
状态 离线
『楼 主』:  批处理延时还有什么精巧点的技巧吗?

ping -n这个可实现延时,但是我认得这不是一个好办法,因为我查看了一下CPU的使用情况,ping时已经达到50%,一个延时都这样了,还搞什么程序?


2006-9-29 07:08
查看资料  发送邮件  发短消息 网志   编辑帖子
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 2 楼』:  

可以变通一下,用 at


2006-9-29 07:41
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子
nvflash
初级用户





积分 126
发帖 38
注册 2006-9-26
状态 离线
『第 3 楼』:  

at好像需要服务的支持,现在许多机器优化了后都没开这个服务


2006-9-29 07:47
查看资料  发送邮件  发短消息 网志   编辑帖子
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 4 楼』:  

Originally posted by nvflash at 2006-9-29 07:47: at好像需要服务的支持,现在许多机器优化了后都没开这个服务
你在自己的虮子上开就是了哦~要是想在别人的虮子上开可以执行下面的开启哦 sc config schedule start= auto sc start schedule


2006-9-29 07:54
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子
nvflash
初级用户





积分 126
发帖 38
注册 2006-9-26
状态 离线
『第 5 楼』:  

如果您说是是任务计划的话,我已经没信心了,我用多种方式试过多次任务计划,都莫名奇妙的没有正确执行,这东西不太稳当,我看还是不用这个好


2006-9-29 08:17
查看资料  发送邮件  发短消息 网志   编辑帖子
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 6 楼』:  

呵呵,建议你搜索 "延时" 以前讨论过好多的


2006-9-29 08:19
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 7 楼』:  

批处理延时方法小结: 1.ping
@echo off
:loop
    echo %time%
    ping 127.1 -n 2 1>nul 
    echo %time%
goto loop
内存使用: cmd.exe 1704k ping.exe 2920k 误差评定: 较高 优点: 代码构造简单 缺点: 内存占用高,延迟时间长的话误差相对较大。 2.还是ping
@echo off
:loop
    echo %time%
    ping 1 -n 1 -w 1000 2>nul 1>nul
    echo %time%
goto loop
内存使用: cmd.exe 1700k ping.exe 2912k 误差评定: 一般 优点: 代码构造简单,时间越长误差越小,精确度较高(50ms) 缺点: 内存占用高 3.call
@echo off
:loop
    echo %time%
    call :delay 1000
    echo %time%
goto loop

:delay
    set /a num=num + 1
    if %num% geq %1 (set num=) && goto :eof
rem    for /l %%i in (1,1,%1) do echo. >nul
goto :eof
内存使用: cmd.exe 1744k [for语句方案] cmd.exe 1740k [set+goto方案] 误差评定: 很高 (受CPU频率影响非常大,几乎无法准确把握全局延迟时间) 优点: 精确度较高 缺点: 不适合需精确把握时间的场合 4.msg
@echo off
:loop
    echo %time%
    msg %username% /time:20 /w "正在延时,点确定可以取消延时!"
    echo %time%
goto loop
内存使用: cmd.exe 1752k msg.exe 2620k 误差评定: 低 优点: 比较稳定,可中途取消延时,代码构造简单 缺点: 内存占用非常大,有窗口弹出(优点?缺点?) 5.vbs
@echo off
    echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs
:loop
    echo %time%
    cscript //b //nologo %tmp%\delay.vbs 2000
    echo %time%
goto loop
内存使用: cscript.exe 4812k cmd.exe 1708k 误差评定: 很低 优点: 精确度最高,使用更灵活,方便 缺点: 产生临时文件,内存占用多 End: 1.测试条件有限,以上数据并不具备权威性。 2.关于精确度。 其实只要是参数可以指定时间的命令精确度都比较高,之所以受影响是取决与命令执行的次数,次数越多,精确度越低。而方案5[vbs方案]中之所以说它的精确度最高,可以举个例子: cscript //b //nologo delay.vbs 2036,而方案二由于最小精确度的缘故,还是比方案5要差一点。 3.欢迎大家补充。 参考链接: 1.从一个GIF文件引起的麻烦 2.[讨论]批处理编程的异类 [ Last edited by 3742668 on 2006-9-29 at 08:49 ]


2006-9-29 08:48
查看资料  发送邮件  发短消息 网志   编辑帖子
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 8 楼』:  

能讲一下你为什么要延时操作?


2006-9-29 08:49
查看资料  发送邮件  发短消息 网志   编辑帖子
nvflash
初级用户





积分 126
发帖 38
注册 2006-9-26
状态 离线
『第 9 楼』:  

请问版主,除了%time%以外,还有哪些是系统内置的变量?


2006-9-29 09:11
查看资料  发送邮件  发短消息 网志   编辑帖子
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 10 楼』:  

Originally posted by nvflash at 2006-9-29 09:11: 请问版主,除了%time%以外,还有哪些是系统内置的变量?
1.运行不带参数的命令set 2.运行命令set /?,末尾。


   此帖被 +2 点积分    点击查看详情   
评分人:【 分数: +1  时间:2010-1-27 09:13
评分人:【 newborenee 分数: +1  时间:2010-3-10 22:14


2006-9-29 09:14
查看资料  发送邮件  发短消息 网志   编辑帖子
asbai
高级用户




积分 653
发帖 252
注册 2006-4-16
状态 离线
『第 11 楼』:  

推荐一个标准 posix 命令:sleep,例如: 睡 10 秒 sleep 10s 1分钟 sleep 1m 2小时 sleep 2h 5天: sleep 5d 附件是 sleep 的 win32 版,对于需要到处传播的批处理来说可能不太方便。自己用的话还是不错的。


附件 1: sleep.rar (2006-11-3 12:40, 7.57 K, 下载附件所需积分 1 点 ,下载次数: 381)
2006-11-3 12:40
查看资料  发送邮件  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 12 楼』:  

  呵呵,多谢楼上又提供了一个延时的小工具,下载来试试~~   记得还有一个工具,叫sleepx,它可以精确到毫秒,不知道这个sleep有没有比较高的精确度哈~~


2006-11-3 23:43
查看资料  发送邮件  发短消息 网志   编辑帖子
asbai
高级用户




积分 653
发帖 252
注册 2006-4-16
状态 离线
『第 13 楼』:  

Originally posted by lxmxn at 2006-11-3 23:43:   呵呵,多谢楼上又提供了一个延时的小工具,下载来试试~~   记得还有一个工具,叫sleepx,它可以精确到毫秒,不知道这个sle ...
呵呵,在 win32 下面,除了用API:timeSetEvent,其它手段很难做到精确的毫秒级延迟(虽然 Performance Counter 也可以,但是CPU耗用率过高)。 timeSetEvent 会在系统全局范围改变时间片粒度,对系统性能也有一点影响。兄台如果觉得真的有必要的话,俺可以写一个


2006-11-4 04:25
查看资料  发送邮件  发短消息 网志   编辑帖子
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 14 楼』:  

这个好啊 支持


2006-12-26 07:40
查看资料  发短消息 网志   编辑帖子
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 15 楼』:  用 goto和set 来做延时

@echo off echo 当前秒数:%time:~6,-3% set /p dalay="输入60以内延迟秒数:"%dalay% :compte if not %dalay%==%time:~6,-3% goto compte echo 时间到!!买单! pause>nul


2006-12-26 19:20
查看资料  发短消息 网志   编辑帖子
<<   [1] [2] [3] [4] [5]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: