マシンの速度にもよりますが、数ミリ秒の精度を達成することが可能です。
このようなバッチの作成が完了したばかりです。実際のコードは共有しませんが、いくつかの指針を示します。
%time%変数を使用し、部分文字列( ":"と "。"なし)に分割します。一方の部分文字列は秒を取得し、もう一方は分を取得します(1時間以上の遅延の場合は時間を追加でき、日付を組み込むこともできます)。 )。
set / Aを使用して、時間変数を、丸められた時間(X:00:00.00)から経過した秒数を表す1つの整数に変換します。入力した遅延(秒単位)をそれに追加します。
短いループを作成し、結合されたvarの値(セクション2で説明)を現在の時刻(このループ内で現在の結合されたmin + sec値を再計算する必要があります)と比較し、一致がtrueの場合にループを終了します。
ここでの1つの主要なバグ修正-「set/A」コマンドで評価されようとしている変数の前のゼロを切り捨てる必要があります。08または09(または単に08または09)が前に付いた整数を使用すると、コンソールのエバリュエーター(このコマンドの場合)がエラーを返すことに気付きました。
備考:これは、コマンド拡張機能が有効になっている場合にのみ機能します。それをテストするには、ルーチンの最初に以下を使用します。
verify other 2>nul
setlocal enableextensions
if errorlevel 1 goto err
次に、「err」という名前のエラーハンドラサブルーチンを追加します。
同じファイルでバッチを続行する場合は、ループサブルーチンの後に「endlocal」を使用します。
ところで、これはWindows XP ServicePack2または3にのみ適用されます。