PC起動の最初の時だけ実行
雲多めだったけれど、概ねいい天気で、25度を超えると、暑いね。
1日1回だけ実行したいプログラムがあった。
それも、決まった時間ではなく、PCが起動するその日の一番最初の時だけ。
しばらくの間は、様子見、ということで、手動で実行していたのだけれど、自動化したいと思った。
こういう場合、タスクスケジューラを使うのがいい。
でも、タスクスケジューラには、1日1回だけ、しかも、その日のPC起動の最初の時だけ実行なんていう設定はなく、時間指定をして、その時間に実行されなかったら、後でまた実行するという感じになる。
ネットで調べていると、どうもその動作が不安定らしい。
同じようなことをしようとした人のBlogでは、PowerShellのスクリプトで、日付を格納するファイルを作成し、その日付と違っていたら実行する、というものを作って運用していた。
それをそのまま使わせてもらってもよかったのだけれど、もっと簡単にしたいと思って、バッチファイルでやってみることに。
AIに聞くと、同じようなものを作ってくれた。
ちょっと手直しをして、下記のものになった。
@echo off
setlocal enabledelayedexpansion
set "SCRIPT_NAME=%~n0"
set "SCRIPT_DIR=%~dp0"
set "FLAG_FILE=%SCRIPT_DIR%%SCRIPT_NAME%.txt"
set TODAY=%date:~0,10%
set exe=実行したいプログラムのフルパス
if not exist "!FLAG_FILE!" (
echo !TODAY! > "!FLAG_FILE!"
call !exe!
) else (
set LAST_RUN=
set /p LAST_RUN=<"!FLAG_FILE!"
if not "!LAST_RUN!"=="!TODAY!" (
call !exe!
echo !TODAY!>"!FLAG_FILE!"
)
)
endlocal
バッチファイルと同じ名前のテキストファイルを作成し、その中に、日付を格納。
その日付と比較して、違っていたら、プログラムを実行するというもの。
このバッチファイルを、タスクスケジューラに、ログイン時に実行するように登録すればいい。
PCが起動する度に、このバッチファイルは実行されるけれど、それは仕方ない。
もう何日も実行しているけれど、きちんと、1日1回、その日の最初のPC起動時にだけ実行してくれている。
これで、手動実行する煩わしさがなくなった。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- スマホを揺らしたい(2025.06.11)
- もっと早くやっておけばよかった(2025.04.20)
- ブックマークの並びが(2025.02.28)
- 一安心(2025.02.12)
- 準備が整ってしまった(2025.02.11)
コメント