タスクスケジューラの使い方が分からない人でも5分でできるサンプル

Windows全般
スポンサーリンク

簡単そうでハマりやすい(と思う)Windows「タスクスケジューラ」をなるべく簡単に使えるように、サンプルファイルを用意しました。よく使うと思われるシンプルな設定としているので、まずはインポートして、日時や実行プログラムパスを変更するだけで済みます。

はじめに

Windows 標準ツール「タスクスケジューラ」は、決まったタイミングで処理を実行させるなど、便利な自動化ツールです。しかしこのツール、詳細な動作定義ができる反面、初めてだと使い方がよく分からずハマりやすい部分が多いと思うのです。システムエンジニアをやっていた私も、当時よくハマっていました。

このツールの使い方を詳しく解説するWeb記事はたくさんあって、とても参考になります。ですが他方で、最低限の要件さえ実現できれば良く、ツールについて調べる時間を省きたい人も多いのではないでしょうか。

そこで、インポートと最小限の変更だけで使えるサンプルを用意しました。使い方は、下のリンクからファイルをダウンロードし、以降の説明を参考にインポートし、必要な設定を修正すればOKです。

サンプルタスクのダウンロード

下記の条件で、決まった日時にバッチファイルを実行します。インポート用ファイルは以下からダウンロードできます(要ZIP解凍)。

サンプルタスクの条件
  • 毎週月曜日と木曜日の昼12:30に実行
  • 指定日時にバッチファイル「C:¥sample\batch1.bat」を実行(引数なし)
    ※バッチファイル自体はサンプルに同梱していません
  • 実行時にログオン中のWindowsユーザー権限で実行(ログオフ状態では実行しない)
  • 「管理者として実行」はしない(最上位の特権は使用しない)
  • その他の詳細条件
    • 指定日時にスリープ中の場合、スリープを自動解除して実行
    • 電源コンセント接続状態は不問(AC電源/バッテリモードのどちらでも実行)
    • バッチファイルの処理時間が長くかかる場合、12時間で強制停止

タスクのインポート方法

タスクのインポート

まず、タスクスケジューラを起動します(起動方法)。

タスクスケジューラの画面で、右側の操作ウィンドウで「タスクのインポート」をクリックします。(もしくは、メニューの[操作]>[タスクのインポート]でもOK)

ダイアログで、上でダウンロードしたXMLファイルを指定します。(ダウンロードしたZIPファイルは解凍してお使い下さい)

下の画面で、赤枠部分にタスクの名前を分かりやすいように設定します(そのままでもいいですが、名前だけは何故か後で変更できません)。ここで実行日時などを修正してもいいですが、次項で改めて解説しますので、とりあえず「OK」ボタンを押します。

下のように「タスクスケジューラ ライブラリ」という位置に、下のように新しいタスクが追加されれば、タスクのインポートは完了です。なお、タスクが表示されていない場合、メニューの[操作]>[最新の情報に更新]などで、表示を更新して下さい。

「作成者」は気にしないで

サンプルファイルをインポートすると、タスクの「作成者」が「COMPUTER1\user1」などと表示されます。これは変更できませんが、動作に影響はありません。

設定の変更方法

インポートしたタスクの実行日時やプログラムを変更するには、タスクスケジューラの「タスクスケジューラライブラリ」に追加されているタスク(表示されていない場合、前述のとおり画面表示を更新)を右クリックして「プロパティ」を選択します。

以下、変更したい内容ごとに操作方法を紹介します。

実行するバッチ・プログラムを変更する(必須)

実行するバッチやプログラムを変更するには、[操作]タブを表示します。下のように、サンプルの実行プログラムが設定されているので、これをダブルクリックして変更します。※サンプルにバッチ本体は含まれていないため、そのままタスクを実行しても失敗します。

編集画面が開きます。下のように、赤枠部分に実行させたいバッチやプログラムのパスを設定します。「開始(オプション)」は空でも設定できますが、実行するバッチ等があるフォルダのパスを指定しておくことを推奨します(後述)。

実行タイミングを変更する

実行する日付や曜日を変更するには、[トリガー]タブを表示します。下のように、サンプルの実行タイミングが設定されているので、変更する場合はこれをダブルクリックします。

詳細設定画面が開きます。下の例は、毎週○曜日の△時に実行するものですが、最低限赤枠の部分を変更すればOKです。毎日実行させたい場合、日~土曜日すべてにチェックします(あるいは区分を「毎日」に変更)。

他の例として、毎月第1月曜日の10:00に実行する場合は、下のようになります。

「管理者として実行」させる

実行するバッチやプログラムによっては、実行する際に右クリックで「管理者として実行」を選ばないと正しく動作しないものがあります。その場合は、下図のように[全般]タブで「最上位の特権で実行する」のチェックをONにします。

セキュリティのことを全く考えなくてよければ、全てONにしておく方が楽ですが、それはお勧めできません。基本はOFFとして、それで正常に動作できない場合のみONにするが良いでしょう。

ログオフ状態でも実行する(別ユーザーで実行)

Windowsにログオン(サインイン)していない状態でも実行したい場合は、下図の設定が必要です。サーバーとして使用するWindows Serverではこちらの方が一般的でしょう。

設定するには[全般]タブで下図のように操作し、タスクを実行したいユーザーを指定します。最後に「OK」を押したときに、指定ユーザーのパスワードが求められますので、正しく入力します。

実行ユーザーは「SYSTEM」がお勧め

実行するユーザーは、管理者ユーザー(Windows Serverでは「Administrator」など)を選びがちですが、「SYSTEM」(ビルトインアカウント)をお勧めします。理由は、パスワードを設定する必要が無く、ユーザーやパスワードの変更の影響を受けないからです。 「SYSTEM」アカウントを選択するには、「ユーザーまたはグループの選択」画面で下図の通り操作します。

ただし、実行するバッチやプログラムによっては、ユーザー環境の関係で「SYSTEM」アカウントでは正常に動作しない可能性もありますので、事前にテスト実行するなどして検証する必要があります。

テスト実行

タスクが正しく実行されるかを確認するには、下のようにタスクを右クリックして「実行する」を選び、テスト実行してみます。バッチプログラムなどの結果が、期待した通りかを確認します。

参考:タスクスケジューラ関連記事

そのほか、タスクスケジューラの使用例や、起こりがちなトラブルの対処方法、その他知っておくと便利なことなどを以下の記事にまとめています。併せてご覧下さい。

おわりに

今回の記事は以上です。

当サイトでは、ITインフラ関連の知識やノウハウをメインに紹介しています。下の関連記事にも役立つ情報があるかもしれませんので、ぜひご覧下さい。

また、知識やノウハウを効率的に学ぶ方法として、Udemy の「ながらセミナーもおすすめです。三日坊主にならず、普段の生活の中でスキルアップする方法です。これについては下の記事で紹介していますので、良ければご覧下さい。

もとだて
もとだて

最後まで読んでいただき、ありがとうございました。

フィードバック

コメント

  1. 渡辺真 より:

    タスクスケジューラで、特定プログラム実行中にバッチを起動する方法を教えて下さい。
    Zoom 会議中にブラウザで内職させないようにしたいのです。
    ブラウザを強制終了するバッチを、タスクスケジューラで 5分毎に実行させることはできました。
    このタスクを、Zoom 実行中だけに有効にしたいのです。
    トリガーのイベント時を使えばよいのかと思いますが、よくわかりません。
    お分かりでしたら教えて下さい。

    • 内職防止・・・難しい課題ですね。タスクスケジューラの機能だけで実現するのは厳しいかもしれません。
      一応、会議開始時にWindows イベントビューアにログが記録されるのであれば、それをタスクスケジューラのトリガーにしてタスクを開始できそうです。しかし、調べた限りでは、そういったログは記録されないようです。

      一時期Zoomに「アテンション・トラッキング」という内職防止機能があったそうですが、プライバシーの観点から削除されたようです。他のリモート会議ソフトでも、この機能は実装しない方針のようです。

      一つの案として、もし「SKYSEA ClientView」のようなPC管理システムを導入している場合、「会議時間中にブラウザがアクティブ状態だった(内職していた可能性がある)」という記録を取ることができます。これを会議参加者に伝えて、「後で調べればバレるから内職しないように」と注意するのが現実的かもしれません。あまりお力になれず恐縮です。

  2. 渡辺真 より:

    早速検討していただき感謝いたします。
    バッチ側で検索条件を入れ子にしたところ、取りあえず目的を達成することができました。
    有難うございます。
    今後ともよろしくお願いいたします。
    **********************
    rem Zoom時ブラウザ終了

    @echo off
    rem 画面表示を最小限に

    @if not “%~0″==”%~dp0.\%~nx0″ start /min cmd /c,”%~dp0.\%~nx0” %* & goto :eof
    rem コマンド画面(バッチファイル)を非表示
    rem https://nllllll.com/windows/windows-bat-minimize/

    rem Windowsで特定のプログラムを自動停止
    rem https://qiita.com/hadacchi/items/749bcdabe44d8c5c8532
    rem Windows:バッチファイルの書き方忘れそうだから備忘録を書くよ
    rem https://at.sachi-web.com/blog-entry-1385.html

    tasklist | find /I “Zoom.exe” > nul
    if not a%errorlevel%==a1 (

    tasklist | find /I “msedge.exe” > nul
    if not a%errorlevel%==a1 (
    taskkill /IM msedge.exe /F
    )
    )

    rem 「/im」は、イメージ名を指定するオプション
    rem 強制終了させる場合は、「/f」オプション
    rem /T 親プロセスと共にすべての子プロセスも終了

    tasklist | find /I “Zoom.exe” > nul
    if not a%errorlevel%==a1 (

    tasklist | find /I “chrome.exe” > nul
    if not a%errorlevel%==a1 (
    taskkill /IM chrome.exe /F
    )
    )

    rem taskkill /IM chrome.exe /T /F 2>NUL

    rem pause
    **********************

タイトルとURLをコピーしました