例
コメントで指摘いただいた方法がベストだと思うのでコレを推奨。
10秒Waitを入れる
timeout /t 10 > nul
ただし、プロンプト上でキー入力があると待ちがキャンセルされます。
普通に実行するとこうなる
C:\>timeout /t 10
10 秒待っています。続行するには何かキーを押してください ...
キー入力待ちでキャンセルされたくない場合は/nobreak
オプションを指定します。
キャンセルされない
timeout /t 10 /nobreak >nul
別の方法
最初に記載していた方法。
コメントで教えてもらった上記の方法で事足りると思うので、こんな方法もありますという程度です…。
10秒Waitを入れる
waitfor dummy /t 10>nul 2>&1 & verify>nul
-
waitfor
は指定した名前のシグナル(例ではdummy
)が送られるまで/t
に続いて指定された数値の秒数だけ待つ。1 - シグナルが送られない場合、エラーとして終了する。
-
waitfor
コマンドのエラー終了時にはエラー: 'dummy' 待ちがタイムアウトしました。
とメッセージが標準エラー出力に送信される。バッチで利用する場合はエラー出力を抑制したいので、>nul 2>&1
にリダイレクト - また、エラーの副作用で
errorlevel
が1
になるため、バッチ内で他の処理へ影響を与えないように& verify>nul
でverify
コマンドの実行を連結して、errorlevel
を0
で上書きする。(古典的なやり方かも)
さらに他の方法
pingを使う方法が紹介されている場合もある。
pingを利用する方法
ping -n 11 localhost>nul
ただ、この方法はerrorlevel
が1
になるような副作用はないものの、pingの送信間隔が必ずしも1秒ではない(実際にはもっと短い)ことと、実際に待ちたい間隔+1を指定する必要がある2ため、長い時間を指定するほど誤差が生まれやすい。