Windows XPやVistaのバッチファイルで数秒待つ常套手段

WILLCOM D4がスリープする前に強制ダイヤルアップ切断するバッチファイルを先日エントリーしました。
こいつ -> WILLCOM D4のW-SIMスリープ復帰後のW-SIM認識失敗を回避するSafeSleep.bat
こいつはおおむね問題なく動作するのですが、
たまーに
たまーに
スリープ復帰後W-SIMでのダイヤルアップができなくなるときがあるようでした。

ダイヤルアップ切断時のW-SIMの挙動を

よくよくみると、

  1. 切断
  2. W-SIMリセット?(アンテナアイコンが一瞬非表示になり、その後圏外ほ表示)
  3. 通常動作

という動作を取っているようで、W-SIMリセット動作中にスリープしてしまうと、復帰後W-SIMの挙動が不安定になるようです。

ならば!

切断後3秒ぐらい待ってからスリープすればいいんじゃないかとか思ったのです。
で、この「3秒ぐらい待つ」というのをバッチファイルで素直に書くことがなぜかできない!
できない!なんで。
SLEEP 3000
とかかけないの?

で、いろいろ検索すると

なんと、pingを使うそうな。
具体的には、

  • 自分に向かってpingする。
  • 3秒ぐらい。
  • その結果は捨てる。
ping localhost -w 3000 > nul

とかすると、結果として3秒くらい待つんだそうな。
なるほどー。