Windowsのタスクスケジューラをschtasksコマンドで追加・削除・変更する方法

概要

今回はタスクスケジューラをコマンドで操作する方法について解説します。

Windowsで定期的な処理を自動化する際、タスクスケジューラは非常に便利ですが、毎回GUIで設定するのは結構面倒ですよね…

Excelとかで管理して、コマンドラインで簡単に変更できたらいいのにと思い調べてみたらいい感じのコマンドがありました!

本記事では、タスクスケジューラをCUIで操作するためのコマンド「schtasks」を使ってタスクを「追加・削除・変更」する方法について、具体的な手順とともにわかりやすく解説します。

それではやっていきましょう(^^b

目次

schtasksコマンドとは?

schtasksコマンドは、Windowsにあらかじめ用意されているシステムツールで、タスクスケジューラの登録、削除、変更、照会などをコマンドプロンプトやPowerShellから実行できます。

もちろんWindowsにもともと入っている物なので、インストールは不要です!

ただタスクを管理できてしまうコマンドのため、実行する際は管理者権限が必要なこともあります。
実行する際は「管理者として実行」したコマンドプロンプトを使用するようにしましょう!

1. タスクを追加する(/Create)

タスクを新しく登録するには、/Createオプションを使用します。
実行するプログラム、スケジュール(毎日、毎週など)、開始時間などを指定できます(^^

基本構文

コマンド

1
schtasks /create /tn "[タスク名]" /tr [実行プログラムのパス] /sc [スケジュール指定]

オプション

  • /tn
    • スケジュールされるタスクの名前を指定
    • (例:/tn "DailyBackup"
  • /tr
    • 実行したいバッチファイルやプログラムのフルパスを指定
    • (例:/tr "C:\scripts\backup.bat"
  • /sc :
    • スケジュールの頻度を指定[daily, weekly, monthly, once, minute]
    • (例:/sc daily/sc weeklyなど)
  • /st :
    • 開始時刻を HH:mm 形式で指定
    • (例:/st 09:00
  • /ru :
    • タスクを実行するユーザーアカウントを指定
    • (例:/ru "SYSTEM"
  • /rl :
    • 実行権限のレベルを指定(管理者権限でスクリプトを動かす場合はこのオプションを付与する)
    • (例:/rl HIGHEST

実行例:毎日朝9時にバックアップ用バッチを実行する

コマンド

1
schtasks /create /tn "DailyBackup" /tr "C:\scripts\backup.bat" /sc daily /st 09:00 /rl HIGHEST

パスにスペースが含まれる場合は、/tr "\"C:\My Scripts\backup.bat\"" のようにダブルクォーテーションでエスケープする必要があるので注意しましょう。

2. タスクを削除する(/Delete)

不要になったタスクを削除するのには /Delete オプションを実行します!
タスク名を指定するだけで簡単に削除可能です(^^b

基本構文

コマンド

1
schtasks /delete /tn "[タスク名]"

オプション

  • /tn
    • 削除するタスクの名前を指定
    • (例:/tn "DailyBackup"
  • /f
    • 確認メッセージを表示せずに強制的に削除
    • (例:単体で /f を付与)

実行例:確認なしで強制的に削除する

コマンドを実行すると「…を削除しますか? (Y/N)」と確認メッセージが出るので、
基本的には下記のように /f(強制)オプションを付けることをお勧めします(^^

コマンド

1
schtasks /delete /tn "DailyBackup" /f

3. タスクの設定を変更する(/Change)

既に登録されているタスクの「実行プログラムのパスを変えたい」「実行ユーザーを変えたい」「一時的に無効化したい」といった場合、/Changeコマンドを使うとタスクの変更ができます。

定義を変更するだけなら、削除から追加したほうが使い勝手はよいのですが、
無効化などはこのコマンドでしかできないので知っておいて損はないと思います!

基本構文

コマンド

1
schtasks /change /tn "[タスク名]" [変更したい項目のオプション]

オプション

  • /tn
    • 変更する対象のタスク名を指定
    • (例:/tn "DailyBackup"
  • /tr
    • 実行プログラムのパスを変更する場合に使用
    • (例:/tr "C:\scripts\new_backup.bat"
  • /ru
    • 実行ユーザーを変更する場合に使用
    • (例:/ru "SYSTEM"
  • /enable
    • 無効化されているタスクを有効化する場合に使用
    • (例:単体で /enable と付与)
  • /disable
    • タスクを無効化(削除せずに一時停止)する場合に使用
    • (例:単体で /disable と付与)

実行例:タスクを一時的に無効化する

稼働中のシステムをメンテナンスする際などは、タスクを一旦 /disable で止めておき、終わったら /enable で再開する、という運用がとても便利です。

コマンド

1
schtasks /change /tn "DailyBackup" /disable

実行例:実行プログラムのパスを変更する

実行プルグラムの配置先(パス)を変更した場合は、下記のコマンドを使用すれば変更できます。

コマンド

1
schtasks /change /tn "DailyBackup" /tr "C:\scripts\new_backup.bat"

おまけ(実行状態の確認と即時実行)

おまけで「追加したタスクが正しく登録されたか」や「テスト用にタスクの即時実行」用のコマンドを紹介します。

基本構文

コマンド

1
2
3
4
5
>>追加したタスクが正しく登録されたか
schtasks /query /tn "[タスク名]"

>>テスト用にタスクの即時実行
schtasks /run /tn "[タスク名]"

オプション

  • /tn
    • 照会するタスクの名前を指定します。
    • (例:/tn "DailyBackup"
  • /run
    • タスクを即時実行します。
    • (例:/run "DailyBackup"

特に即時実行/runは、指定したスケジュールを待たずに今すぐテスト稼働させることができるコマンドなので、本稼働前の確認として実行しておくとよいかもしれません(^^b

まとめ

Windowsにおける schtasks コマンドを使ったタスクスケジューラの操作方法を解説しました。

毎回手作業で頑張って登録していたのですが、これをやることでかなり手間が減りました!

自分は定期タスクなどを全部タスクスケジューラに登録している人間なので、こういったコマンドを知れるのはでかい!
生産性大幅増です(^^!

自分のブログでは、こういった技術関連の記事をたくさん書いています。
皆さんのエンジニア人生の助けに少しでもなったらうれしいです!

以上となります。
まだまだ生産性を上げられることがわかると、テンション上がりますね!
それではお疲れさまでした!