タスクスケジューラをコマンドラインから管理する(schtasks)
Windowsには、指定の日時になったら指定の処理を自動で行うための仕組みとして「タスクスケジューラ」という機能があります。
これを使うと、例えば「毎日17:30になったらパソコンをシャットダウンする」みたいな事が出来ます。
「指定時間になったらシャットダウンする」というタスクを元に、この機能をコマンドラインから使うことについて説明します。
前提条件
OS: Windows10 バージョン 1903
がインストールされたパソコンで実行するものとします。
指定時間になったらシャットダウンするタスクを作成
まず、必要なタスクを作成します。これもコマンドラインからできるようですが最初だけなのでGUIから作ることにします。
- Windowsキーを押下してスタートメニューを表示
- キーボードから「タスクスケジューラ」と入力し、表示される「タスクスケジューラ」をクリックしてタスクスケジューラを起動
- 画面右ペインの「タスクの作成」をクリック、表示される「タスクの作成」画面にて以下の通り入力。
「全般」タブ 名前:シャットダウン 説明:指定された時間にOSシャットダウン実行
- 「トリガー」タブ -> 「新規」ボタンを押下、「新しいトリガー」画面を開いて以下の通り入力。
開始:実行したい日付と時刻を入力
- 「OK」を押下して「新しいトリガー」画面を閉じる。
- 「操作」タブ -> 「新規」ボタンを押下、「新しい操作」画面を開いて以下の通り入力。
プログラム/スクリプト:C:\Windows\System32\shutdown.exe 引数の追加:-s -t 60 -f
- 「OK」を押下して「新しい操作」画面を閉じる。
- 「OK」を押下して「タスクの作成」画面を閉じる。
- 「タスクスケジューラ」画面中央ペインに「シャットダウン」という名前のタスクが表示されている事を確認し、「タスクスケジューラ」画面を閉じる(右上×をクリック、またはファイル -> 終了)
これで、タスクを作ることができました。指定した時間まで待ち、PCがシャットダウンされる事を確認しましょう。
実行日時を変更する
基本的には「タスクスケジューラ」を起動して該当タスクをダブルクリック、「トリガー」を編集して時間を変更すればよいです。
また、定期的にするのでよければ「毎日〇〇時に実行」という指定もできます。
が、私の場合はやりたい日や時間がまちまちで、その都度「タスクスケジューラ」を起動して画面に従い入力、という手続きがだんだん面倒になってきたのでした。
という事で、コマンドから実行することにします。
schtasksコマンドから設定変更する
- Windowsキーを押下してスタートメニューを表示
- キーボードから「cmd」と入力し、表示される「コマンド プロンプト」を右クリックして「管理者として実行」をクリック
- 現在の設定を確認
>schtasks /query /TN "シャットダウン" /v /FO list
以下のように表示される。
フォルダー\ ホスト名: bata64PC タスク名: \シャットダウン 次回の実行時刻: N/A 状態: 準備完了 ログオン モード: 対話型のみ 前回の実行時刻: 1999/11/30 0:00:00 前回の結果: 267011 作成者: bata64 実行するタスク: C:\Windows\System32\shutdown.exe -s -t 60 -f 開始: N/A コメント: N/A スケジュールされたタスクの状態: 有効 アイドル時間: 無効 電源管理: バッテリ モードで停止, バッテリで開始しない ユーザーとして実行: bata64 再度スケジュールされない場合はタスクを削除する: 無効 タスクを停止するまでの時間: 72:00:00 スケジュール: スケジュール データをこの形式で使用することはできません。 スケジュールの種類: 一度だけ 開始時刻: 9:12:08 開始日: 2019/11/13 終了日: N/A 日: N/A 月: N/A 繰り返し: 間隔: 無効 繰り返し: 終了時刻: 無効 繰り返し: 期間: 無効 繰り返し: 実行中の場合は停止: 無効
実行したい日時を指定する(例:2019年11月14日 11:50とする場合)
>schtasks /change /TN "シャットダウン" /SD "2019/11/14" /ST "11:50" /RU "bata64"
以下のようにユーザのパスワードを聞かれるので入力してEnterを押下。
bata64 の実行者パスワードを入力してください:
正しいパスワードを入力すると以下の通り表示される。
成功: スケジュール タスク "シャットダウン" のパラメーターは変更されました。
再度確認。「開始時刻」と「開始日」が変わっている事がわかる。
>schtasks /query /TN "シャットダウン" /v /FO list フォルダー\ ホスト名: bata64PC タスク名: \シャットダウン 次回の実行時刻: N/A 状態: 準備完了 ログオン モード: 対話型のみ 前回の実行時刻: 1999/11/30 0:00:00 前回の結果: 267011 作成者: bata64 実行するタスク: C:\Windows\System32\shutdown.exe -s -t 60 -f 開始: N/A コメント: N/A スケジュールされたタスクの状態: 有効 アイドル時間: 無効 電源管理: バッテリ モードで停止, バッテリで開始しない ユーザーとして実行: bata64 再度スケジュールされない場合はタスクを削除する: 無効 タスクを停止するまでの時間: 72:00:00 スケジュール: スケジュール データをこの形式で使用することはできません。 スケジュールの種類: 一度だけ 開始時刻: 11:50:00 開始日: 2019/11/14 終了日: N/A 日: N/A 月: N/A 繰り返し: 間隔: 無効 繰り返し: 終了時刻: 無効 繰り返し: 期間: 無効 繰り返し: 実行中の場合は停止: 無効
バッチファイルにする
都度都度schtasks コマンドで指定されたオプションを書くのも面倒なので、更に簡略化します。
以下のような記載内容の「shutdown.bat」というファイル名のテキストファイルを作成、適当なフォルダに保存します。
schtasks /change /TN "シャットダウン" /SD %1 /ST %2 /RU "bata64" schtasks /query /TN "シャットダウン" /v /FO list
コマンドプロンプトを管理者として実行、このバッチファイル格納ディレクトリに移動し、
>.\shutdown.bat 2019/11/15 11:10
と実行すれば実行日時を変更できます。変更したいときにはこれからはこのバッチを実行すれば良くなります。便利ですね。
では。