欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

我還從網(wǎng)上看到過使用-w參數(shù),指定超時等待時間來作為延時時間的,這不是可能,除非指定的地址ping不通,否則這個延時實現(xià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é)果:

驗證ping

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

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

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

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

測試效果

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

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

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

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

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

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

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

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

::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組合的方式,可以靈活的組合出你想要的延時時間,而不受timeout/choice單次最大延時的限制;
  • ping命令想要延時m秒,則-n參數(shù)值需設(shè)置為m+1,因為首次發(fā)出ping請求到接收到值幾乎是瞬時的;

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

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

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

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

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

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

sleep 10

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

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

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

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

WScript.Sleep WScript.Arguments.Item(0)

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

cscript //nologo delay.vbs 1000 >nul

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

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

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

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

你也可以使用臨時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命令即可,但如果若要獲得更精確的延時時間,可以優(yōu)先考慮VBScript.sleep方案;
  • 雖然ping命令可能是最常用的,但是當(dāng)需要延遲的時間較長時,它的誤差會越來越多,timeout/choice會比它好很多

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

相關(guān)文章

最新評論