1、利用ping命令延時(shí)
| 批處理示例1: @echo off |
解說(shuō):用到了ping命令的“/n”參數,表示要發(fā)送多少次請求到指定的ip。本例中要發(fā)送3次請求到本機的ip(127.0.0.1)。127.0.0.1可簡(jiǎn)寫(xiě)為127.1?!?gt;nul”就是屏蔽掉ping命令所顯示的內容。
2、利用for命令延時(shí)
| 批處理示例2: @echo off |
解說(shuō):原理很簡(jiǎn)單,就是利用一個(gè)計次循環(huán)并屏蔽它所顯示的內容來(lái)達到延時(shí)的目的。
3、利用vbs延遲函數,精確度毫秒,誤差1000毫秒內
| 批處理示例3: | 運行顯示: |
| @echo off echo %time% call :delay 5000 echo %time% pause exit :delay | 10:44:06.45 10:44:11.95 請按任意鍵繼續. . . |
上面的運行結果顯示實(shí)際延時(shí)了5500毫秒,多出來(lái)的500毫秒時(shí)建立和刪除臨時(shí)文件所耗費的時(shí)間。誤差在一秒之內。
4、僅用批處理命令實(shí)現任意時(shí)間延遲,精確度10毫秒,誤差50毫秒內僅用批處理命令就可以實(shí)現延遲操作。
| 批處理示例4: | 運行顯示: |
| @echo off set /p delay=請輸入需延遲的毫秒數: set TotalTime=0 set NowTime=%time% ::讀取起始時(shí)間,時(shí)間格式為:13:01:05.95 echo 程序開(kāi)始時(shí)間:%NowTime% :delay_continue set /a minute1=1%NowTime:~3,2%-100 ::讀取起始時(shí)間的分鐘數 set /a second1=1%NowTime:~-5,2%%NowTime:~-2%0-100000 ::將起始時(shí)間的秒數轉為毫秒 set NowTime=%time% set /a minute2=1%NowTime:~3,2%-100 :: 讀取現在時(shí)間的分鐘數 set /a second2=1%NowTime:~-5,2%%NowTime:~-2%0-100000 ::將現在時(shí)間的秒數轉為毫秒 set /a TotalTime+=(%minute2%-%minute1%+60)%%60*60000+%second2%-%second1% if %TotalTime% lss %delay% goto delay_continue echo 程序結束時(shí)間:%time% echo 設定延遲時(shí)間:%delay%毫秒 echo 實(shí)際延遲時(shí)間:%TotalTime%毫秒 pause | |
實(shí)現原理:首先設定要延遲的毫秒數,然后用循環(huán)累加時(shí)間,直到累加時(shí)間大于等于延遲時(shí)間。
誤差:windows系統時(shí)間只能精確到10毫秒,所以理論上有可能存在10毫秒誤差。經(jīng)測試,當延遲時(shí)間大于500毫秒時(shí),上面的延遲程序一般不存在誤差。當延遲時(shí)間小于500毫秒時(shí),可能有幾十毫秒誤差,為什么?因為延遲程序本身也是有運行時(shí)間的,同時(shí)系統時(shí)間只能精確到10毫秒。
為了方便引用,可將上面的例子改為子程序調用形式:
| 批處理示例5: @echo off ::-----------以下為延時(shí)子程序-------------------- |
| ::模擬進(jìn)度條效果示例1: @echo off&color 2f&title 本程序僅用于“模擬進(jìn)度條效果”的演示 【初學(xué)者】 |
聯(lián)系客服