灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2216回复:0

dos批处理延时技术

楼主#
更多 发布于:2012-12-14 10:25

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
游客

返回顶部