批處理編程的異類——時鐘(Clock)

批處理編程的異類——時鐘(Clock)
一、暫停(Pause)、延遲(Delay)、等待(Wait)、睡眠(Sleep)
1)for+set+if,時間精度爲0.01秒,適用平臺爲WinNT/2K/XP/2003。
  利用for解析變量%time%並存爲兩個時間點%start%和%now%,再利用set /a計算兩個時間點的時間差,最後用if判斷時間差是否達到設定的暫停時間。
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------
  @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)VBS腳本中的sleep函數,時間精度爲0.001秒,使用平臺爲Win9x/WinNT系列。
   動態建立一個調用sleep()函數的VBS腳本,而後用Windows腳本宿主的命令行版本cscript調用它。
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------
  @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)ping的消息發送間隔,時間精度爲1秒,使用平臺爲Win9x/WinNT系列。
   須要你的Windows系統中正常安裝了網卡的TCP/IP協議,有兩種方案,方案二不建議採用,見主題 [討論]批處理編程的異類 十二、13樓:
(1) 利用ping兩次發送消息之間的間隔時間。ping在發送多個消息時,在獲得上一次消息的迴應後,它會再等待1秒的時間才發送下一次消息,而這個迴應時間因機型、系統和網絡配置而不一樣,其中IP地址尤爲關鍵,只有本地的回送地址 127.0.0.1 由於是當即迴應因此纔是相對恆定的,其餘地址大多會產生顯著的差別。此種方法要等待更大的時間,是指定發送的消息數爲等待的時間加一,由於第一個消息是不等待的,IP 地址必須是 127.0.0.1 。其等待2秒的程序以下:
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------
::根據植樹原則,n後的數字爲暫停秒數加一
ping -n 3 127.0.0.1>nul
(2) 利用ping的最大等待時間。ping向0.0.0.1發送一次「網際消息控制協議 (ICMP)」迴響請求消息,由於 0.0.0.1 是個沒法響應 ping 請求的IP地址,因此默認狀況下,ping會等待必定的最大響應時間——4秒後便中止等待,而-w能夠改變這個每發送一次消息所等待的最大響應時間。而若是將 IP 地址改成當即響應的127.0.0.1或其餘響應時間很短的IP ,那 -w 便失去了做用,由於每次發送等待時間都不會達到最大的響應時間,此時延時會縮短。此種方法要等待更大的時間,能夠直接使用 -w 指定,可是須要減去必定的發送延時,這個延時須要本身事先測定一下,不然會有不到1秒的偏差;並且 IP 地址必須是不響應請求的地址。其等待2秒的程序以下:
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------
ping -n 2 -w 500 0.0.0.1>nul
4)choice的缺省選擇等待功能,時間精度爲1秒,適用平臺爲MS-DOS/Win9x/WinNT系列。
  /t:y,2 將缺省選擇字符設置爲y,等待時間是2秒,/n禁止[y,n]提示出如今命令行上,「rem|」的做用是禁止choice從鍵盤接受按鍵,從而暫停不會由於按下y或者其它鍵而被意外終止。
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------
rem|choice /t:y,2 /n >nul
5)ASCII彙編代碼,延遲精度爲0.001秒,適用平臺爲MS-DOS/Win9x/WinNT。
  德國人Herbert Kleebauer給出了一個通用方案,經過ASCII彙編器間接產生一個sleep.exe程序來實現延遲,這個程序分爲DOS和Win兩個模塊,分別調用DOS系統中斷服務和WindowsAPI。
CODE:  [Copy to clipboard]
--------------------------------------------------------------------------------
:: Sleep.bat - Sleep/Delay/Wait n seconds
:: Herbert Kleebauer(Germany) - 2005/05/29
:: Modified by Will Sort - 2005/06/02, 07-25
@echo off
echo q | debug>nul
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>sleep.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>sleep.com
echo T}{z~~@GwkBG@OEKcUt`~}@MqqBsy?seHB~_Phxr?@zAB`LrPEyoDt@Cj?>>sleep.com
echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>sleep.com
echo LFvAURQ?OYLTQ@@?~QCoOL~RDU@?aU?@{QOq?@}IKuNWpe~FpeQFwH?Vkk>>sleep.com
echo _GSqoCvH{OjeOSeIQRmA@KnEFB?p??mcjNne~B?M??QhetLBgBPHexh@e=>>sleep.com
echo EsOgwTLbLK?sFU`?LDOD@@K@xO?SUudA?_FKJ@N?KD@?UA??O}HCQOQ??R>>sleep.com
echo _OQOL?CLA?CEU?_FU?UAQ?UBD?LOC?ORO?UOL?UOD?OOI?UgL?LOR@YUO?>>sleep.com
echo dsmSQswDOR[BQAQ?LUA?_L_oUNUScLOOuLOODUO?UOE@OwH?UOQ?DJTSDM>>sleep.com
echo QTqrK@kcmSULkPcLOOuLOOFUO?hwDTqOsTdbnTQrrDsdFTlnBTm`lThKcT>>sleep.com
echo @dmTkRQSoddTT~?K?OCOQp?o??Gds?wOw?PGAtaCHQvNntQv_w?A?it\EH>>sleep.com
echo {zpQpKGk?Jbs?FqokOH{T?jPvP@IQBDFAN?OHROL?Kj??pd~aN?OHROd?G>>sleep.com
echo Q??PGT~B??OC~?ipO?T?~U?p~cUo0x>>sleep.com
sleep.com>sleep.exe
echo wait %1 seconds:
sleep.exe %1000
del sleep.com
del sleep.exe
發表於 @ 2008年12月29日 14:17:00 | 評論( 0 ) | 編輯| 舉報| 收藏
舊一篇:批處理命令之Start的詳細用法
查看最新精華文章 請訪問博客首頁相關文章
使用批處理ping ip段內主機DOS延時實現批處理for中如何實現break完美的Dos批處理實現sleep用批處理寫的:數據庫備份還原工具用批處理刪除7天之前的備份文件批處理批處理使用心得
 數據庫

相關文章
相關標籤/搜索