« ケイトウ | トップページ | 気になった雲 »

2024年10月 5日 (土)

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起動時にだけ実行してくれている。

これで、手動実行する煩わしさがなくなった。

|

« ケイトウ | トップページ | 気になった雲 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« ケイトウ | トップページ | 気になった雲 »