濮阳杆衣贸易有限公司

主頁 > 知識庫 > 批處理 延時不完全總結(jié)

批處理 延時不完全總結(jié)

熱門標(biāo)簽:無錫極信防封電銷卡價(jià)格 沈陽電銷 95專業(yè)外呼線路是怎么回事 aa專業(yè)電話外呼系統(tǒng) 用電話機(jī)器人取代人工 外呼獲客系統(tǒng) 浙江語音外呼系統(tǒng)招商 谷歌地圖標(biāo)注錯位 四川防封電銷卡套餐

1、利用ping命令實(shí)現(xiàn)延時,方法巧妙而且可以控制,但精度不高。
如:ping -n 3 127.0.0.1>nul大約可以停頓2秒
-n后的數(shù)字是發(fā)送包的數(shù)目,為暫停秒數(shù)加一。此法每秒有0.5%的偏差,時間精度為1秒。

@echo off 
@ping 127.0.0.1 -n 6 >nul 
start gdh.txt



2、用vbs腳本中的sleep實(shí)現(xiàn),樣本代碼如下:
缺點(diǎn):生成臨時文件
優(yōu)點(diǎn):時間精度為0.001秒,精度高

例子1、vbs cscript

復(fù)制代碼 代碼如下:

@echo off
echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs
Delay.vbs 2
del Delay.vbs
echo OK!

例子2、vbs start /wait

@echo off 
echo wscript.sleep 5000>sleep.vbs 
start /wait sleep.vbs 
start gdh.txt 
del /f /s /q sleep.vbs


---------------------------------------
以上程序代碼可以實(shí)現(xiàn)暫停2秒,2秒過后回顯OK!

3、利用“死”循環(huán):設(shè)定一個時間差,如果當(dāng)前時間與設(shè)定時間之差不大于設(shè)定之時間差,則不退出該循環(huán),從而達(dá)到延時的目的。樣本代碼:
---------------------------------------------------

復(fù)制代碼 代碼如下:

@echo off
set /a Start=%time:~6,2%
:ProDelay
set /a Now=%time:~6,2%
set /a Diff=%Now%-%Start%
rem 以下這一句可以防止秒數(shù)從59跳到1時產(chǎn)生的錯誤。
if %Diff% lss 0 set /a Diff=%Diff%+60
if %Diff% leq 2 goto :ProDelay
echo ok!

---------------------------------------------
以上程序也可以實(shí)現(xiàn)延時2秒的目的。

4:choice
優(yōu)點(diǎn):時間精確,CPU占用低,是最佳選擇

@echo off 
choice /t 5 /d y /n >nul 
start gdh.txt

5:for+set+if,時間精度為0.01秒
缺點(diǎn):CPU占用高,語句過長,不常用

@echo off 

setlocal enableextensions 

echo %time% 
call :ProcDelay 500 
echo %time% 
start gdh.txt 
: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


6、利用at命令。不過此方法與其說是延時,還不如說成定時的好。
5、

復(fù)制代碼 代碼如下:

@echo off setlocal enableextensions
echo WScript.Sleep 1000 > %temp%.\tmp$$$.vbs
set /a i = 5
:Timeout
if %i% == 0 goto Next
setlocal
set /a i = %i% - 1
cls
echo DOS倒計(jì)時程序:alike收集
echo ##################################
echo # #
echo # [%i%]秒后程序開始運(yùn)行 #
echo # #
echo ##################################
cscript //nologo %temp%.\tmp$$$.vbs
goto Timeout
goto End

:Next
cls echo.
for %%f in (%temp%.\tmp$$$.vbs*) do del %%f
start edit boot.ini
exit

下面是其它網(wǎng)友的補(bǔ)充:

【方案一】for+set+if,時間精度為0.01秒,適用平臺為WinNT/2K/XP/2003。

 利用for解析變量%time%并存為兩個時間點(diǎn)%start%和%now%,再利用set /a計(jì)算兩個時間點(diǎn)的時間差,最后用if判斷時間差是否達(dá)到設(shè)定的暫停時間。

復(fù)制代碼 代碼如下:

@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

【方案二】VBS腳本中的sleep函數(shù),時間精度為0.001秒,使用平臺為 Win9x/WinNT系列。

 動態(tài)創(chuàng)建一個調(diào)用sleep()函數(shù)的VBS腳本,然后用Windows腳本宿主的命令行版本cscript調(diào)用它。

復(fù)制代碼 代碼如下:

@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

【方案三】ping的消息發(fā)送間隔,時間精度為1秒,使用平臺為 Win9x/WinNT系列。

 需要你的Windows系統(tǒng)中正常安裝了網(wǎng)卡的TCP/IP協(xié)議,有兩種方案,方案二不建議采用,見主題 [討論]批處理編程的異類 12、13樓:

(1) 利用ping兩次發(fā)送消息之間的間隔時間。ping在發(fā)送多個消息時,在得到上一次消息的回應(yīng)后,它會再等待1秒的時間才發(fā)送下一次消息,而這個回應(yīng)時間因機(jī)型、系統(tǒng)和網(wǎng)絡(luò)配置而不同,其中IP地址尤其關(guān)鍵,只有本地的回送地址 127.0.0.1 因?yàn)槭橇⒓椿貞?yīng)所以才是相對恒定的,其他地址大多會產(chǎn)生顯著的差異。此種方法要等待更大的時間,是指定發(fā)送的消息數(shù)為等待的時間加一,因?yàn)榈谝粋€消息是不等待的,IP 地址必須是 127.0.0.1 。其等待2秒的程序如下:

復(fù)制代碼 代碼如下:

::根據(jù)植樹原則,n后的數(shù)字為暫停秒數(shù)加一
ping -n 3 127.0.0.1>nul

(2) 利用ping的最大等待時間。ping向0.0.0.1發(fā)送一次“網(wǎng)際消息控制協(xié)議 (ICMP)”回響請求消息,因?yàn)?0.0.0.1 是個無法響應(yīng) ping 請求的IP地址,所以默認(rèn)情況下,ping會等待一定的最大響應(yīng)時間——4秒后便停止等待,而-w可以改變這個每發(fā)送一次消息所等待的最大響應(yīng)時間。而如果將 IP 地址改為立即響應(yīng)的127.0.0.1或其他響應(yīng)時間很短的IP ,那 -w 便失去了作用,因?yàn)槊看伟l(fā)送等待時間都不會達(dá)到最大的響應(yīng)時間,此時延時會縮短。此種方法要等待更大的時間,可以直接使用 -w 指定,但是需要減去一定的發(fā)送延時,這個延時需要自己事先測定一下,否則會有不到1秒的誤差;而且 IP 地址必須是不響應(yīng)請求的地址。其等待2秒的程序如下:

復(fù)制代碼 代碼如下:

ping -n 2 -w 500 0.0.0.1>nul

【方案四】choice 的缺省選擇等待功能,時間精度為1秒,適用平臺為MS-DOS/Win9x/WinNT系列。

/t:y,2 將缺省選擇字符設(shè)置為y,等待時間是2秒,/n禁止[y,n]提示出現(xiàn)在命令行上,“rem|”的作用是禁止choice從鍵盤接受按鍵,從而暫停不會因?yàn)榘聪聐或者其它鍵而被意外終止。

復(fù)制代碼 代碼如下:

rem|choice /t:y,2 /n >nul

【方案五】ASCII匯編代碼,延遲精度為 0.001秒,適用平臺為MS-DOS/Win9x/WinNT。

德國人Herbert Kleebauer給出了一個通用方案,通過ASCII匯編器間接產(chǎn)生一個sleep.exe程序來實(shí)現(xiàn)延遲,這個程序分為DOS和Win兩個模塊,分別調(diào)用DOS系統(tǒng)中斷服務(wù)和WindowsAPI。

復(fù)制代碼 代碼如下:

:: 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

您可能感興趣的文章:
  • 批處理bat 延時執(zhí)行命令的兩種方法
  • 可以生成SLEEP.EXE的延時命令的bat文件
  • 寫一個bat批處理文件啟動windows進(jìn)程和延時關(guān)閉的代碼
  • Windows命令行bat批處理延遲sleep方法(批處理延時)

標(biāo)簽:常德 青島 煙臺 迪慶 連云港 南平 興安盟 廣安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《批處理 延時不完全總結(jié)》,本文關(guān)鍵詞  批處理,延時,不完全,總結(jié),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《批處理 延時不完全總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于批處理 延時不完全總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    大安市| 沧州市| 长汀县| 石林| 淮南市| 柞水县| 石屏县| 十堰市| 容城县| 喀喇| 若羌县| 忻州市| 津市市| 新巴尔虎左旗| 绿春县| 武汉市| 大安市| 金沙县| 礼泉县| 韩城市| 微博| 融水| 克拉玛依市| 江口县| 文化| 泸西县| 庆阳市| 东平县| 商河县| 西林县| 邳州市| 深水埗区| 封开县| 化德县| 泌阳县| 拉孜县| 米易县| 保康县| 彭阳县| 浦县| 呈贡县|