好好的批處理,居然沒有正式的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:
@echo offecho "emulate sleep......"call :wait_ext1 60echo "60 seconds waited...."goto :eof:wait_ext1@ping 127.0.0.1 -n 2 -w 1000 > nul@ping 127.0.0.1 -n %1% -w 1000> nul
這個就表示要sleep大概60秒鐘。
當然,你也可以把wait_ext1那部分重新命名一個單獨的批處理進行調用。
3. 似乎2003還有一個resource kit包下載,裡邊就有sleep.exe
(為何不發布出來呢?)
http://malektips.com/xp_dos_0002.html
有時候真的是痛恨Windows下的批處理.