批處理延遲sleep方法


GPS平台、網站建設、軟件開發、系統運維,找森大網絡科技!
http://cnsendnet.taobao.com
來自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=657

 

Windows下批處理文件沒有像Linux一樣的Sleep函數進行延時處理,這里有2種較為實用的方法實現延遲:

1、使用WScirptsleep功能,精度0.001

創建vbs延遲文件,然后在批處理文件中調用,使用WScript的 sleep函數,實現sleep的效果。

實戰:

1)創建文件sleep.vbs:

echo WScript.sleep 5000 > sleep.vbs

sleep.vbs 內容如下:

WScript.sleep 5000。

2)在批處理文件中調用,創建示例文件test.bat,內容如下:

復制代碼代碼如下:


sc stop OracleOraDb10g_home1TNSListener
Wscript sleep.vbs
sc start OracleOraDb10g_home1TNSListener

2、使用ping 的定時功能,精度1

實戰:創建示例文件test2.bat,內容如下:

復制代碼代碼如下:


sc stop OracleOraDb10g_home1TNSListener
ping -n 3 127.0.0.1>nul
sc start OracleOraDb10g_home1TNSListener

說明:3為ping包發送次數,可作為延遲秒數進行使用,需要延遲幾秒就設置幾。

>nul避免屏幕輸出,將輸出輸入到空設備,因為不需要結果,僅用到其定時功能。

 

以下是其他網友的補充:

好好的批處理,居然沒有正式的Sleep可供調用。有時候,確實感到很無趣。
1. 方法1: 
ping 1.1.1.1來模擬
好不容易從stackoverflow上找到一個答案(稱之為答案,是因為它被人標注為answer),是這么實現的:
ping 1.1.1.1 -n 1 -w 60000 > nul
這個表示,會sleep 60秒鍾。

果真如此嗎? 它要基於一個假設:1.1.1.1永遠不會被目標機器ping通。但我卻碰到了靈異事件,在某台測試機上,直接能ping通:
Pinging 1.1.1.1 with 32 bytes of data:
Reply from 1.1.1.1: bytes=32 time<1ms TTL=60
Reply from 1.1.1.1: bytes=32 time<1ms TTL=60
Reply from 1.1.1.1: bytes=32 time=6ms TTL=60
Reply from 1.1.1.1: bytes=32 time<1ms TTL=60


Ping statistics for 1.1.1.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 6ms, Average = 1ms
所以,這個方法是靠不住的。

2. 依然使用ping來模擬,
請看下邊的bat:

這個就表示要sleep大概60秒鍾。

當然,你也可以把wait_ext1那部分重命名一個單獨的批處理進行調用。

3. 似乎2003還有一個resource kit包下載,里邊就有sleep.exe
(為何不發布出來呢?)

下載地址:http://www.jb51.net/softs/2466.html

有時候真的是痛恨Windows下的批處理.

3、還有兩種方法實現Sleep功能

一種是通過連續讀取系統時間,進行比較,達到一定值時退出實現睡眠功能,但該操作應耗用CPU較大,不推薦。

另一種是德國一位哥們的做法,直接用debug方法生成一個定時器程序,該方法可能破壞系統的穩定性,或容易植入病毒(使用他人代碼),亦不推薦使用。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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

del sleep.com

以上代碼要使用批處理方式.使用 sleep.exe 10000 時間單位是毫秒

4、從腳本之家下載sleep.exe文件

http://www.jb51.net/softs/2466.html

 

GPS平台、網站建設、軟件開發、系統運維,找森大網絡科技!
http://cnsendnet.taobao.com
來自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=657


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM