Windowsで指定した時間にプログラムを自動的に実行

PC

Windowsには繰返し作業を自動化できる「タスク スケジューラ」という機能があります。
頻繁に行う作業を手動するのは色々と面倒なので、これで自動化してしまうと効率が良いと思います。

環境は Windows 11 Home 64bit です。

タスク スケジューラをGUIから使う

こちらは、GUIからタスク スケジューラを操作する方法で、初心者や初級者の人にもわかりやすいと思います。

起動方法

[スタート] の検索欄から「タスク スケジューラ」と入力するか
あるいは [Win] + [R] で「taskschd.msc -s」と入力します。

入力する際は「タスク スケジューラ」というように「タスク」と「スケジューラ」の間に半角スペースを入れてください。

スケジュールを設定する

「タスク スケジューラ (ローカル)」→「基本タスクの作成…」をクリックします。

すると基本タスク作成ウィザードというウィンドウが出てきます。

名前: 分かり易い名称を記入 (例: 自動更新)
説明: 不要だったら無記入で大丈夫です

トリガー: 毎日(好きなものを選択)
日付: 時間指定 (2022年11月12日から19:00に起動という風に)
間隔: 1 (1だと毎日、2だと2日に1回実行される)

操作: 「プログラムの開始」を選択

プログラム/スクリプト欄: 実行するプログラムを入力、或いは参照する。

例: タスクが実行されてから10秒後にパソコンをシャットダウンしたい場合、プログラム/スクリプトに「shutdown.exe」のパスを入力し、引数の追加に「-s -f -t 10」と入力します。

「次へ」をクリックして、内容を確認後「完了」押せば設定は終わりです。

ちゃんと設定されたか確認する

「最新の情報に更新」をクリックし、設定したタスクを反映させます。

左上の「タスク スケジューラ ライブラリ」をクリックして真ん中の画面の最下層にタスクを設定した際に入力したタスク名(ここでは、自動更新)という名前が入っていれば無事に設定完了です。

設定したタスクの削除

設定したタスクを右クリックして「削除」を押せば、削除されます。

参考にさせていただいたサイト様

【Windows 10対応】タスクスケジューラで定期的な作業を自動化する
ファイルのバックアップなど定期的に繰り返し実行しなければならない作業は、Windows OSの標準機能「タスクスケジューラ」で自動化しよう。ウィザードを利用すれば、簡単にプログラム起動のスケジュールを組むことができる。

タスク スケジューラをCUI(コマンドライン)から使う

上記で説明したタスクスケジューラは勿論、CUI(コマンドライン)からでも実行可能で、その場合は「schtasks」コマンドを使います。こちらは中・上級者向けの内容となります。

schtasks コマンドのオプション

/Create
タスクの新規作成

/tn
作成するタスク名

/tr
実行するプログラムやスクリプトを指定
例: C:\Windows\system32\calc.exe

/sc
実行頻度の指定
minute — 分単位
hourly — 時間単位
daily — 日単位
weekly — 週単位
monthly –月単位
once — 一度きり
onstart — 起動時
onlogin — ログイン時
onidle — アイドル時

/st
実行の開始時刻。例: /st 19:00
このオプションは /sc と併用しなければならない

/ri
繰り返す間隔を分単位で指定する
有効範囲: 1 – 599940 分

/mo
より細かな時間制御をする
/sc hourlyなどと一緒に使用する
修飾子一覧
MINUTE: 1-1439 (分)
HOURLY: 1-23 (時)
DAILY : 1-365 (日)
WEEKLY: 1-52 (週)
MONTHLY: 1-12(月) or FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY
※ONCE, ONSTART, ONLOGIN, ONIDLEは修飾子無し

/et
終了時刻指定。例: /et 20:00

/du
実行する継続時間。/etと一緒だと使用不可。

/k
終了時刻又は継続時間にタスクを終了する
/et又は/duを指定する必要がある

schtasksの使い方と例

タスク名「Program01」で毎日19:00に update.bat を実行する。

schtasks /Create /tn "Program01" /tr "update.bat" /sc daily /st 19:00

タスク名「Program01」で6時間おきに update.bat を実行する。

schtasks /Create /tn "Program01" /tr "update.bat" /sc hourly /mo 6

登録したタスクの確認する。

schtasks /query /tn Program01

Program01という名前で登録されたタスクを削除する。

schtasks /delete /tn Program01 /f

他のオプションを確認する

schtasks /Create /?

その他

他にもATコマンドというものがあり、指定日時にコマンドとプログラムが実行できたのですが、廃止されたみたいですね。一応、互換性維持のためにATコマンド自体は残されていますが、コマンドプロンプトから「at /?」と入力すると「schtasks.exe」を使うように促されます。

コメント