亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Windows?Bat實(shí)現(xiàn)延時(shí)功能的幾種常見方式小結(jié)

 更新時(shí)間:2024年02月23日 10:32:43   作者:?小青龍  
本文主要介紹了Windows?Bat實(shí)現(xiàn)延時(shí)功能的幾種常見方式小結(jié),包括ping命令,timeout命令,choice命令,for循環(huán),sleep命令及VBScript.sleep命令這六種方法,具有一定的參考價(jià)值,感興趣的可以了解一下

在 bat批處理中實(shí)現(xiàn)延時(shí)功能的幾種常用方式

1. 使用ping命令實(shí)現(xiàn)延時(shí)

使用ping命令可以實(shí)現(xiàn)延時(shí)的效果,命令如下:

ping 127.0.0.1 -n 11 >nul
  • -n 指定ping的次數(shù),每次大概間隔1s,>nulping過程回顯信息給屏蔽
  • ping命令實(shí)現(xiàn)的延時(shí),時(shí)間精度:大約1s,內(nèi)存占用:ping命令所占用空間

注意閉坑:ping 從第1次發(fā)出請(qǐng)求到接收到回顯數(shù)據(jù)幾乎是瞬間的,所以你如果想實(shí)現(xiàn)10秒的延時(shí),需要設(shè)置-n 為11(至少針對(duì)ping 127.0.0.1 回環(huán)地址是這樣),網(wǎng)上很多說需要多少秒,-n參數(shù)值就設(shè)置多少秒, 真是有些誤人子弟呢!

我還從網(wǎng)上看到過使用-w參數(shù),指定超時(shí)等待時(shí)間來作為延時(shí)時(shí)間的,這不是可能,除非指定的地址ping不通,否則這個(gè)延時(shí)實(shí)現(xiàn)根本不可靠

可以通過下邊的腳本,驗(yàn)證下-n到底應(yīng)該設(shè)置多少

@echo off
echo s_time:%time%
ping -n 1 127.0.0.1 > nul
echo e_time:%time%
echo s_time2:%time%
ping -n 2 127.0.0.1 > nul
echo e_time2:%time%
pause

輸出結(jié)果:

驗(yàn)證ping

可以看出,網(wǎng)上那些說【需要延時(shí)多少秒,-n就設(shè)置多少秒】的人,是有多誤人子弟了。不過當(dāng)-n指定的值越大,最終的延時(shí)誤差就越大,最終可能也不在乎這1秒的誤差了,你可以嘗試將-n設(shè)置為較大值驗(yàn)證下。
(這個(gè)誤差實(shí)際上與你ping的地址有很大關(guān)系)

然后再通過一個(gè)腳本,驗(yàn)證下-w參數(shù),對(duì)應(yīng)延時(shí)等待是否有效

@echo off
echo s_time:%time%
ping -n 10 -w 5000 127.0.0.1 > nul
echo e_time:%time%
pause

按網(wǎng)上錯(cuò)誤的說法,這里的結(jié)果應(yīng)該為延時(shí) 10*5000/1000=50 秒;從測(cè)試結(jié)果看,實(shí)際上延時(shí)大概只有(10-1)秒;-w指定的值未生效,如果你能保證被ping的地址每次都是超時(shí)(注意不是ping不通)-w參數(shù)指定的時(shí)間才會(huì)作用到延時(shí)效果中

測(cè)試效果

2. 使用timeout命令實(shí)現(xiàn)延時(shí)

使用timeout命令也可以實(shí)現(xiàn)延時(shí)的效果,命令如下:

timeout /t 5 /nobreak >nul
  • /t 指定等待的描述,有效范圍-199999秒,-1表示無限期的等待
  • /nobreak表示忽略按鍵并等待指定時(shí)間,唯一能接收的按鍵是Ctrl+Z組合鍵,如果等待時(shí)間未到,按Ctrl+Z鍵將終止批處理程序,timeout后續(xù)的命令也不在執(zhí)行
  • timeout命令實(shí)現(xiàn)的延時(shí),除-1無限等待外,單次最大延時(shí)99999秒,不過你可以多次調(diào)用timeout命令來實(shí)現(xiàn)超過這個(gè)限制的延時(shí)等待
  • timeout命令實(shí)現(xiàn)的延時(shí),時(shí)間精度:大約1s,內(nèi)存占用:timeout命令所占用空間

3. 使用choice命令實(shí)現(xiàn)延時(shí)

使用choice命令也可以實(shí)現(xiàn)延時(shí)的效果,命令如下:

choice /C yn /T 10 /D y >nul
  • /C 指定選項(xiàng)列表,/T 指定做出默認(rèn)選擇之前,等待的時(shí)間,可接受的值0-9999,/D 超過等待時(shí)間后,默認(rèn)選擇項(xiàng);
  • choice命令實(shí)現(xiàn)的延時(shí),單次最大延時(shí)9999秒,不過你可以多次調(diào)用choice命令來實(shí)現(xiàn)超過這個(gè)限制的延時(shí)等待;
  • choice命令實(shí)現(xiàn)的延時(shí),時(shí)間精度:大約1s,內(nèi)存占用:chocie命令所占用空間

4. 使用for循環(huán)實(shí)現(xiàn)延時(shí)

使用for循環(huán)也可以實(shí)現(xiàn)延時(shí)的效果,確切的來說是使用for循環(huán)+ping/timeout/choice組合,來實(shí)現(xiàn)延時(shí)的效果。
實(shí)現(xiàn)100s延時(shí),命令如下:

::for+ping組合
for /l %%i in (1,1,10) do @echo %%i & ping -n 11 127.0.0.1 >nul
::for+timeout組合
for /l %%i in (1,1,10) do @echo %%i & timeout /t 10 >nul
::for+choice組合
for /l %%i in (1,1,10) do @echo %%i & choice /C yn /T 10 /D y >nul
  • for+ping/timeout/choice組合的方式,可以靈活的組合出你想要的延時(shí)時(shí)間,而不受timeout/choice單次最大延時(shí)的限制;
  • ping命令想要延時(shí)m秒,則-n參數(shù)值需設(shè)置為m+1,因?yàn)槭状伟l(fā)出ping請(qǐng)求到接收到值幾乎是瞬時(shí)的;

對(duì)于這種組合命令的延時(shí),我建議盡可能將for的循環(huán)次數(shù)設(shè)置較小,而循環(huán)體內(nèi)具體實(shí)現(xiàn)延時(shí)任務(wù)的命令對(duì)應(yīng)的參數(shù)值設(shè)置盡可能大。因?yàn)槲依斫饷看窝h(huán),相當(dāng)于重新啟動(dòng)了ping/timeout/choice的程序,而每次啟動(dòng)程序勢(shì)必會(huì)耗費(fèi)一定的時(shí)間,當(dāng)循環(huán)次數(shù)較多時(shí),這個(gè)啟動(dòng)時(shí)間帶來的影響將是比較大的。
(在我本地測(cè)試,使用for+ping組合命令,同樣實(shí)現(xiàn)100s延時(shí),for循環(huán)1次+ping -n 101 實(shí)際耗時(shí)大約101s,而 for循環(huán)100次+ping -n 2 實(shí)際耗時(shí)大約102s,后者比前者多出大約1s)

5. 使用sleep命令實(shí)現(xiàn)延時(shí)

Windows batch中沒有原生的sleep命令,需要借助第三方工具。
下載sleep.exe

curl https://www.computerhope.com/download/utility/sleep.exe > sleep.exe

將下載好的sleep.exe程序,放到C:\Windows\System32或其他在PATH環(huán)境變量中的路徑,即可全局使用。

實(shí)現(xiàn)延時(shí)10s,使用比較簡(jiǎn)單:

sleep 10

時(shí)間精度:1毫秒
內(nèi)存占用:sleep命令本身很小

6. 使用VBScript.sleep實(shí)現(xiàn)延時(shí)

在批處理中,可以通過調(diào)用vbscript的方式實(shí)現(xiàn)延時(shí)功能

1)創(chuàng)建一個(gè)vbs腳本文件(如 delay.vbs),內(nèi)容如下:

WScript.Sleep WScript.Arguments.Item(0)

2)在批處理腳本中調(diào)用這個(gè)vbscript,實(shí)現(xiàn)延時(shí)

cscript //nologo delay.vbs 1000 >nul

表示在調(diào)用delay.vbs腳本時(shí)傳入?yún)?shù)1000,表示等待1000毫秒,即1秒鐘。

時(shí)間精度:1毫秒;內(nèi)存占用:vbs腳本本身并不大,執(zhí)行vbs的cscript/wscript進(jìn)程大概占用1MB內(nèi)存;

調(diào)用vbs腳本,還可以使用wscript命令,如 wscript delay.vbs 1000 >nul

需要注意腳本文件和批處理腳本文件的路徑問題

你也可以使用臨時(shí)vbscript腳本的方式避免路徑問題,具體如下:

echo WScript.Sleep WScript.Arguments.Item(0) > delay.vbs
cscript //nologo delay.vbs 1000 >nul && del delay.vbs

即在批處理文件當(dāng)前路徑下生成vbs,用完就刪除。

總結(jié)

  • 除了sleep.exe是第三方工具,需要下載安裝,其余都是Windows自帶的,可以直接使用;
  • 一般來說,使用ping命令或timeout命令即可,但如果若要獲得更精確的延時(shí)時(shí)間,可以優(yōu)先考慮VBScript.sleep方案;
  • 雖然ping命令可能是最常用的,但是當(dāng)需要延遲的時(shí)間較長(zhǎng)時(shí),它的誤差會(huì)越來越多,timeout/choice會(huì)比它好很多

到此這篇關(guān)于Windows Bat實(shí)現(xiàn)延時(shí)功能的幾種常見方式小結(jié)的文章就介紹到這了,更多相關(guān)Bat 延時(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論