• 在批处理中实现等待/延迟/暂停


    (以下所有的程序均以等待/延迟/暂停2秒示例)

    1、比较传统的设计思路,利用for解析变量%time%并存为一个时间点,再利用set计算两个时间点的时间差,最后用if判断时间差是否达到设定的暂停时间。时间精度为0.01秒,适用平台为WinNT/2K/XP/2003。
      @echo off
      setlocal enableextensions
      echo %time%
      call :ProcDelay 200
      echo %time%
      goto :EOF

      :ProcDelay delayMSec_
      setlocal enableextensions
      for /f "tokens=1-4 delims=:. " %%h in ("%time%") do set start_=%%h%%i%%j%%k
        :_procwaitloop
        for /f "tokens=1-4 delims=:. " %%h in ("%time%") do set now_=%%h%%i%%j%%k
        set /a diff_=%now_%-%start_%
      if %diff_% LSS %1 goto _procwaitloop
      endlocal & goto :EOF

    2、使用Windows的VBS脚本中的sleep函数,可以动态创建这个VBS脚本,然后用Windows脚本宿主的命令行版本调用它。时间精度为0.001秒,使用平台为Win9x/WinNT系列。
      @echo off & setlocal enableextensions enabledelayedexpansion
      echo WScript.Sleep 2000 > %temp%\tmp$$$.vbs
      echo %time%
      cscript //nologo %temp%\tmp$$$.vbs
      echo %time%
      for %%f in (%temp%\tmp$$$.vbs) do if exist %%f del %%f
      endlocal & goto :EOF

    3、如果你的Windows系统中正常安装了网卡的TCP/IP协议,也可以使用ping定时发送测试包,以此达到暂停一定时间的目的;-n后的数字是发送包的数目,根据植树原则,为暂停秒数加一,此法每秒有0.5%的偏差。时间精度为1秒,使用平台为Win9x/WinNT系列。
    ping -n 3 127.0.0.1>nul

    4、使用choice的缺省选择等待功能实现暂停,但它有个缺点,就是不能在等待途中按键,否则暂停的倒计时将自动终止。时间精度为1秒,适用平台为MS-DOS/Win9x/WinNT系列。
    choice /t:y,2 /n >nul

    5、德国人Herbert Kleebauer给出了一个通用方案,通过间接产生一个exe程序来实现延迟,这个程序分为DOS和Win两个模块。延迟精度为0.001秒,适用平台为MS-DOS/Win9x/WinNT。代码见附件(http://willsort.blogchina.com/inc/sleep.bat.txt)。


    Ping: http://www.cnblogs.com/flyfish/archive/2006/08/20/482073.html
  • 相关阅读:
    我所遭遇过的游戏中间件---HumanIK
    我所遭遇过的游戏中间件--Kynapse
    3D屏保:排色榜
    3维DEMO: 抽奖圆盘
    MySQL存储过程中的3种循环
    MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比
    如何执行字符串的PHP代码
    PHP 注册错误和异常处理机制
    Mysql表中唯一编号的分配机制
    装系统w7、ubuntu、centos等系统(一)
  • 原文地址:https://www.cnblogs.com/holly/p/1569819.html
Copyright © 2020-2023  润新知