私はジレンマに陥っています。ユーザーに、次のタスクが始まろうとしていることを知らせるプリエンプティブ メールを送信したいと考えています。そのために、いくつかの変数を定義し、blat 経由で電子メールを送信し、バッチを 5 分間スリープさせてから、残りのスクリプトを実行しています。
%time%
午後 4 時に実行すると、16:00:00.00 になります。それに 5 分を追加すると、次のコードを含むメールに表示するためだけに:
@echo on
SET /a timeminute = 00 + 5 << --- test code
::SET /a timeminute = %time:~3,2% + 5 << --- actual code in GoLive
IF %timeminute% LEQ 9 (
GOTO :resetTime
) ELSE (
GOTO :end
)
:resetTime
SET timeminute = "0%timeminute%"
:end
echo %timeminute%
pause
期待どおりの05ではなく、5を取得します。時間に算術演算を使用すると先頭のゼロが削除されるため、後で追加しようとしましたが、後の SET は IF ステートメント内にあり、表示されませんか? どうすればそれを見ることができますか?バッチに環境変数のようなものはありますか?
この問題は、最初の 9 分以内にのみ発生することに注意してください。それ以降は、先行ゼロはなくなります。
おまけ: 1 時間の分数が 55 ~ 59 の場合はどうなりますか? 私の例では 60 から 64 になるので、1 時間を切り上げて残りの分を処理する方法が必要です。今のところ、これはバグだと思いますが、このスクリプトが奇妙なタイミングで実行されるとは考えていません。しかし、それが簡単な修正である場合は、私に知らせてください。私はその問題に取り組もうとさえしていません.
よろしくお願いします