论坛
门户
内部优惠
喜欢
话题
VIP会员
搜索
新浪微博
登录
注册
100%
100%
首页
>
操作系统
>
dos批处理
>
dos批处理延时技术
回复
« 返回列表
灯火互联
管理员
注册日期
2011-07-27
发帖数
41778
QQ
火币
41290枚
粉丝
1086
关注
100
加关注
写私信
打招呼
阅读:
2216
回复:
0
dos批处理延时技术
楼主
#
更多
只看楼主
倒序阅读
发布于:2012-12-14 10:25
保存
100%
100%
[]
1
dos批处理延时
技术
举个例子,我们要延时5秒打开gdh.txt这个文件,可以用以下几个方法
方法一:ping
缺点:时间精度为1秒,不够精确
@echo off
@ping 127.0.0.1 -n 6>nul
start gdh.txt
方法二:vbs start /wait
缺点:生成临时文件
有点:时间精度为0.001秒,精度高
@echo off
echo wscript.sleep5000>sleep.vbs
start /wait sleep.vbs
start gdh.txt
del /f /s /q sleep.vbs
方法三:vbs cscript.
@echo off
echo wscript.sleep 5000>sleep.vbs
@cscript sleep.vbs>nul
start gdh.txt
del /f /s /q sleep.vbs
方法四:choice
优点:时间精确,
cpu
占用低,是最佳选择
@echo off
choice /t 5 /d y /n>nul
start gdh.txt
批处理延时方法小结:
1.ping
@echooff
:loop
echo %time%
ping 127.1 -n 2 1>nul
echo %time%
goto loop
内存
使用: cmd.exe1704k
ping.exe 2920k
误差评定:较高
优点: 代码构造简单
缺点: 内存占用高,延迟时间长的话误差相对较大。
2.还是ping
@echooff
:loop
echo %time%
ping 1 -n 1 -w 10002>nul 1>nul
echo %time%
goto loop
内存使用:cmd.exe 1700k
ping.exe 2912k
误差评定:一般
优点: 代码构造简单,时间越长误差越小,精确度较高(50ms)
缺点: 内存占用高
3.call
CODE:
@echooff
:loop
echo %time%
call :delay1000
echo %time%
goto loop
:delay
set /anum=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
CODE:
@echo off
:loop
echo %time%
msg%username% /time:20 /w "正在延时,点确定可以取消延时!"
echo %time%
gotoloop内存使用: cmd.exe 1752k
msg.exe 2620k
误差评定:低
优点: 比较稳定,可中途取消延时,代码构造简单
缺点: 内存占用非常大,有窗口弹出(优点?缺点?)
5.vbs
CODE:
@echooff
echo Wscript.Sleep WScript.Arguments(0)>%tmp%delay.vbs
:loop
echo %time%
cscript //b//nologo %tmp%delay.vbs 2000
echo %time%
gotoloop
内存使用: cscript.exe 4812k
cmd.exe 1708k
误差评定: 很低
优点: 精确度最高,使用更灵活,方便
缺点: 产生临时文件,内存占用多
一个取代choice命令的批处理 (精典)
@echo off ;; setlocal;; cls
:tou
chcp 437 >nul
graftabl 936>nul
set /p=请选择 [ 回车键 --- 执行A 其它键 --- 执行B]:<nul
echo exit|cmd/kprompt $_e 100 CD 16 B4 4C CD21$_g$_|debug>nul
echo.;echo.;echo.
if[%errorlevel%]==[13] ( goto :A ) else ( goto :B)
:A
::按回车符到这里执行
echo 这里是标签:A
echo.
goto :End
:B
::按其它键到这里执行
echo这里是标签: B
echo.
goto :End
:End
:: 用于测试键值的代码段
:: 如果希望代替Choice外部命令,则这个代码段可以测试出不同的键值交由%ErrorLevel%判断
echo 所输入的ASCII码键值:%errorlevel%
echo.;echo.;echo.;echo.;echo.;Pause
cls
gototou
@echo off
:go
cls
echo 计算机将于 17:40关机
echo 现在时间是 %time%
echo %time% >time.txt
find /i"17:48" time.txt >nul
if %errorlevel%==1 goto go
taskkill /f/im cmd.exe
exit
实时显示当前时间
@echo off
echo%time:~0,-3%
ping -n 2127.1>nul;cls;%0
::第二行代码说明:“:”和“~”必不可少!“~”后的数字:为正数表示舍弃输出结果的前几位;直接跟负数表示取到输出结果的后第几位。逗号后的数字:为正数表示取到输出结果的前第几位;为负数表示舍弃输出结果的后几位。echo%date:~4% echo %time:~-3% echo %date:~4%%time:~0,-3%
现在我有一条路径:c:windowssystem32
我想删除最后一个字符""变为c:windowssystem32
set "str=c:windowssystem32"
echo %str:~0,-1%
逐字显示
@echo off;color 0a;title做语文老师真不容易
set /p= <nul
set /p=(alt+数字键盘22为退格键,可在记事本中键入)<nul
for /d %%a in (做 个 语 文 老 师 真 不 容 易 . 以下 是 学 生 的 造 句 ) do set /p=%%a<nul;ping -n 1127.1>nul
逐字显示:我是一个中国人
@echo off
for %%a in (我 是 一 个中 国 人) do ping -n 2 127.0|set /p b=%%a
for /d %%a in (我 是 一 个 中 国 人) doset /p b=%%a<nul;ping -n 1 127.1>nul
::自注set后面的%%a如果添加空格,效果是:我是 一 个,不加空格,效果是:我是一个
@echo off;setlocalenabledelayedexpansion
set "str=http://bbs.cn-dos.net"
for /l%%a in (0 1 50) do (
if "!str:~%%a,1!" neq "" (
set/p=!str:~%%a,1!<nul
for /l %%i in (1 1 400) doecho.>nul
) else (
pause>nul;exit/b
)
)
计划任务设定
SCHTASKS /Create /SC DAILY /RU administrator /RP HZF /TN HU /SD2008/11/21 /ST 21:30:00 /TR c:windowssystem32notepad.exe
喜欢
0
评分
0
最新喜欢:
淘宝天猫隐藏优惠券地址
回复
100%
发帖
回复
« 返回列表
普通帖
您需要登录后才可以回帖,
登录
或者
注册
100%
返回顶部
关闭
最新喜欢