例
コメントで指摘いただいた方法がベストだと思うのでコレを推奨。
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ため、長い時間を指定するほど誤差が生まれやすい。