WindowsプラットフォームでのSleep処理の実装方法

Windowsプラットフォーム上のバッチでスクリプトを組む場合、sleep処理を挟みたい場合にどう実装するか、なかなか悩ましい。バッチの実装がbatなのかvbsなのか等、何が最適な実装なのかはケースバイケースにはなるが、今回は備忘録を兼ねて簡単な実装方法をまとめてみる。

1.Windows Resource Kit Toolsを利用する

リソースキットをインストールすれば、sleepコマンドが使用可能になる。実装的にも非常にシンプルなので個人的にはよく使うのだが、サーバ上で動作させるスクリプトの場合にはサーバへのリソースキット導入が困難な場合が多く、この方法は現実的には難しい場合もある。


C:\>sleep /?
Usage: sleep time-to-sleep-in-seconds
sleep [-m] time-to-sleep-in-milliseconds
sleep [-c] commited-memory ratio (1%-100%)

C:\>

2.pingコマンドを利用する

pingは1コマンド1秒待機するという仕様を利用し、自ホスト(localhost127.0.0.1)へ指定時間pingを投げる。5秒待機する場合であれば、以下のようにすればよい。


c:\> ping localhost -n 5 > nul

3.VBScript(WSH)を利用する

バッチの中で、一時的にvbsを作ってcscriptコマンドで呼び出す。なおvbsのsleepはミリ秒指定なので注意が必要。5秒待機する場合には、以下のようにすればよい


ECHO WScript.sleep 5000 > sleep.vbs
C:\WINDOWS\system32\cscript.exe sleep.vbs > NUL
DEL sleep.vbs