本投稿ではWindows タスクスケジューラでバッチを実行する方法と
タスクスケジューラの設定で気をつけるべき3つの注意点を紹介します。
本投稿では以下の環境で実行します。
Windows10での検証ですがWindows Server2016でも動作は同じであることを確認しています。
タスクスケジューラには以下の内容で作成したバッチを実行します。
タスクスケジューラに設定する条件
本検証では以下の設定をタスクスケジューラでおこないます。
- 5分おきにバッチを実行
- 5分経ったら起動したバッチを閉じて再度バッチを起動
- 実行時はバッチが表示されているようにする
タスクスケジューラの設定
[windows]+[R]で「ファイル名を指定して実行」を開きます。
[taskschd.msc]と入力し、[Enter]を押下します。
「タスクスケジューラ」が起動するので「タスクスケジューラライブラリ」を右クリックし、
「新しいフォルダー」をクリックします。
作成したフォルダーを右クリックし、[タスクの作成]をクリックします。
[名前]を入力して、[トリガー]タブをクリックします。
[説明]の入力は任意です。
[新規]をクリックします。
設定は以下とし、[OK]をクリックします。
設定
◉1回
開始:2021/01/01 15:25:00
詳細設定
☑︎繰り返し間隔:5分間
☑︎継続時間:無期限
☑︎有効期限:2021/01/01 16:10:00
☑︎有効
[操作]タブをクリックし、[新規]をクリックします。
[参照]をクリックします。
実行するバッチを選択し、[開く]をクリックします。
「プログラム/スクリプト」にバッチのパスが入ったことを確認し、[OK]をクリックします。
[条件]タブをクリックし、全てのチェックを外して、[設定]をクリックします。
以下を設定し、[OK]をクリックします。
タスクが既に実行中の場合に適用される規則:既存のインスタンスの停止
トリガーで設定した「開始」の日時でバッチが実行されることを確認します。
有効期限までは5分おきにバッチが実行されていきます。
次にタスクスケジューラでバッチを実行する際の注意点を紹介します。
タスクスケジューラでバッチを実行する際の注意点
実行したバッチが表示されない(CMDが起動しない)
タスクスケジューラで設定したバッチのCMD画面が指定の時間になっても表示されない。
けれど、履歴を見ると実行された形跡がある。
もし、バッチのCMD画面を表示したいのであれば「全般」タブで設定する
「◉ユーザーがログオンしているかどうかにかかわらず実行する」ではなく
「◉ユーザーがログオンしているときのみ実行する」を選択しておく必要があります。
バッチが実行されない
「トリガー」で指定したバッチが実行されないのは以下の理由が考えられます。
・ファイルパス名に使用している文字
→ファイルパスに()などがあるとバッチが実行されません。
実行するバッチのパスはできるだけシンプルにしましょう。
どうしても使用したい場合はバッチを指定する際にダブルクォーテーションで
ファイルパスを囲ってあげましょう。
・バッチの複数指定
→「操作」にて複数のバッチを指定した場合、順番にバッチが処理されていきます。
つまり、2つ目に指定したバッチは1つ目のバッチが終了しないと実行されません。
並列でバッチを実行したい場合はstartコマンドで実行したいバッチを指定したバッチを
作成し、そのバッチをタスクスケジューラに仕込むか同じ構成で新しいタスクを作成します。
ただし、startコマンドで実行したバッチはタスクスケジューラで制御できません。
一度のみの実行であれば問題ありませんが定期的に実行するタスクであれば
新しいタスクをバッチ分作成しましょう。
「有効期限」と「次回の実行時刻」が同じ時の動作
「トリガー」で指定した「有効期限」と「次回の実行時刻」が同じ日時の場合、タスクは実行される時と実行されない時がありました。試行回数25(実行された:2 実行されない:23)
試行回数も少ないので検証ミスの可能性もあります。
確かなことは言えませんが有効期限以降は絶対に実行してほしくないタスクであればこの二つの日時が被らないようにしましょう。
コメント