Windows tips‎ > ‎MS-DOS, CMD‎ > ‎

バッチファイルでsleep

pingを50秒間隔で打ちたい。
標準pingコマンドのオプションでは出来ません。
なんて不便な・・・。

バッチファイルにもsleepコマンドは無いので、pingに限らず、間隔を置いた処理、時間差での処理などを書くのに苦労します。

そこでこれ。

VBScriptにならsleepがあるので力技で実現してしまいます。

sleep以外にもVBSにしか実現できない処理を.batの中などで実行したい時に、この例のような力技が、意外と役立つんですね。

まぁ、もちろんbashなんかに比べると手間は手間ですが、こういう自分ライブラリを色々持っておくと、パワーシェル無しのWindowsでもかなりのレベルまでコマンドライン(CLI/CUI)の自動化が可能になります。

以下をsleeping.bat等として保存。

@echo off
:LOOP
echo ----------pinging...
ping -n 1 google.com
echo ----------waiting...
call :sleep 50000
goto LOOP

:sleep
REM ## sleep [milli second]
echo WScript.Sleep %1 > tmp_sleep.vbs
cscript //NoLogo tmp_sleep.vbs
del tmp_sleep.vbs
goto :EOF