こんにちは!今回はログオン時にタスクを実行させ、その後定期的に再実行し続けるスケジュールを登録するコマンドを紹介していきたいと思います。
単発で実行させたいタスクやログオン時に処理をスケジュールをすることは簡単なのですが、これを組み合わせて実行させるタスクスケジュールは意外なことに正攻法では登録できません。
これを実現するために、定期実行するスクリプトを組んだりする方法もなくはないのですが、ちょっと工夫するだけでタスクスケジューラのみで登録できたので、方法を載せておきたいと思います。
やりたいこと
「任意のユーザのログオン時 - トリガーされた後、〇時間ごとに無期限に繰り返します。」タスクを、コマンドで作成したい。
通常、任意のユーザのログオン時のタスクは、「schtasks /create /sc onlogon ~~」で作成できます。
同じく、〇時間ごとに繰り返すタスクは、「schtasks /create /ri 〇 ~~」で作成できます。
しかし、「schtasks /create /sc onlogon /ri 〇 ~~」とオプションを併用するとエラーが発生します。(以下画像の通り)
これを回避する方法のご紹介です。
スクリプト例
schtasks /create /tn "TESTTASK" /tr "C:\TEST.exe" /sc onlogon
schtasks /change /tn "TESTTASK" /ri 60
解説
schtasksコマンドは、タスクスケジューラを操作するコマンドです。
日々のパソコンで行うファイルの移動などを、バッチファイルとして登録している人なども多いと思います。
「任意のユーザのログオン時」に実行させるオプション
通常、以下のように「/sc onlogon」オプションを使用すると、「任意のユーザのログオン時」に実行されるタスクを作成できます。
schtasks /create /sc onlogon /tn "TESTTASK" /tr "c:\test.exe"
「実行後、〇分ごとに繰り返す」オプション
また、以下のように「/ri 〇」オプションを使用すると、「実行後、〇分ごとに繰り返す」タスクを作成できます。
schtasks /create /ri 5 /tn "TESTTASK" /tr "c:\test.exe" /sc monthly
併用するとエラー
しかし、併用すると「/sc onlogon」と「/ri 〇」は併用できません、というエラーが発生してしまいます。
エラーを回避するには
このエラーを回避するため、以下の通りコマンドを2行に分けています。
①「任意のユーザのログオン時」でタスクを作成
②「/change」オプションで、「実行後、〇分ごとに繰り返す」設定を追加(変更)
schtasks /create /tn "TESTTASK" /tr "C:\TEST.exe" /sc onlogon schtasks /change /tn "TESTTASK" /ri 60
2行に分けることで、「任意のユーザのログオン時に実行し、その後一定間隔で実行(リピート)」するタスクの作成を実現しています。
あとがき
今回は、「任意のユーザのログオン時に実行し、その後一定間隔で繰り返す」タスクをコマンドで作成する方法のご紹介でした。
直感的には「任意のユーザのログオン時」と「一定間隔で実行」オプションを一気に併用すればいい気がしてしまいますよね。
実際には、これらオプションは併用することができません。ですが、作成したあとに定期実行するように追加変更してあげることでできてしまいました。
「任意のユーザのログオン時に実行し、その後一定間隔で繰り返す」タスクを作成する際は上記でご紹介したコマンドでやってみてくださいね。
何かのお役に立てれば幸いです。
コメント