タスク・スケジューラをコマンド・プロンプトから制御するTech TIPS

Windows NTでタスクを管理するにはat.exeコマンドを利用していたが、Windows 2000以降ではGUIの[タスク]管理ツールも利用可能になった。Windows XP/Windows Server 2003では、at.exeから機能が向上したschtasks.exeコマンドが利用可能になった。at.exeで作成したタスクを[タスク]管理ツールやschtasks.exeで変更すると、at.exeでは管理できなくなる。

» 2005年06月25日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 2000/Windows XP/Windows Server 2003



解説

 Windows OSの「タスク」は、設定したプログラムを、あらかじめ決められた日付や時間になると実行する機能である。定期的に実行する作業、例えばシステムやデータのバックアップ、データやシステム状態の同期、定時的な動作状況のレポート作業、ログ・ファイルの整理(古いログの削除や移動)など、さまざまな場面で利用できる。このほかにも、例えばウイルス・チェック・ソフトウェアで、定期的な更新のチェックなどで利用されている場合もある。

●「schedule」サービスと「Task Scheduler」サービス

 タスクを実現するサービスは、Windows NTでは「schedule」というサービスによって実現されていた。「schedule」サービスは、システムに登録されたタスクを監視しており、指定された時間になるとタスクを起動する、という動作を行う。

 これに対しWindows 2000/Windows XP/Windows Server 2003では、このサービスは改良され、新しく「Task Scheduler」サービスによって管理されるようになった。改良点としては、GUIによるタスク管理ツールの追加、タスクごとの実行アカウントの指定(従来はすべてのタスクが同一アカウント権限で実行された)、複数の実行スケジュールの設定、ログオン時やアイドル時のタスク実行、などがある。

●タスクの管理方法

 タスク関連のサービスの変更に伴い、タスクを管理する方法は、OSのバージョンに応じて少しずつ異なっている。

■Windows NTの場合
 Windows NTでタスクを作成/削除するには、コマンドライン・ツールのat.exeコマンドを利用する。GUIのツールはなく、しかも1度作成したタスクを修正することはできない。実行スケジュールや実行するコマンドを変更するには、1度削除してから、新規に作成し直す必要があるなど、使い勝手はよくない。

■Windows 2000の場合
 Windows 2000では、[コントロール パネル]に新しく用意された[タスク]アプレットを利用してタスクを管理する。従来のat.exeコマンドも利用できるが、これは互換性のためだけに残されているコマンドである。at.exeで作成したタスクもこの[タスク]アプレットで表示されるが、1度でも[タスク]アプレットで設定内容を変更すると、そのタスクはWindows 2000の「Task Scheduler」サービス用に昇格・変更され、at.exeコマンドではもう一覧を見ることさえできない。

[タスク]アプレット [タスク]アプレット
Windows 2000以降のOSでは、[コントロール パネル]の[タスク]アプレットを利用してタスクを管理する。
  (1)タスクを作成するには、このウィザードを利用する。
  (2)at.exeコマンドで作成されたタスク。名前が「At〜」となっている。
  (3)タスク作成ウィザードで作成されたタスク。

■Windows XP/Windows Server 2003の場合
 GUIツールの[タスク]管理ツールに加えて、新しくschtasks.exeというコマンドが用意された。これはコマンド・プロンプト上で利用するツールであり、GUIの[タスク]管理ツールで作成されたタスクと互換性がある。Windows XP以降のOSでは、at.exeは利用せず、必ずこちらを利用するべきである(Windows 2000同様、互換性のためにat.exeコマンド自体は提供されている)。

操作方法

●schtasks.exeでタスクを制御する

 telnetなどでリモートからログオンして作業する場合、GUIのタスク制御ツールを利用できないので、代わりにschtasks.exeを使ってタスクを管理する。schtasksコマンドの使い方は、「schtasks /?」を実行すると表示されるし、[ヘルプとサポート センター]で「schtasks」を検索すれば、へルプ・メッセージを見ることもできる。以下ではローカルのタスクを管理する例を示すが、引数に「/s コンピュータ名」を付けて、リモートのコンピュータのタスクを管理することもできる。

●タスクの作成

 タスクを作成するには、「schtasks /create」コマンドを利用する。次の例は、毎日朝4:00にバックアップ・コマンドを起動するタスクの作成例である。

C:\>schtasks /create /tn "Backup App" /tr c:\windows\backup.cmd /sc daily /st 04:00:00
タスクは現在ログオンしているユーザー名 ("EXAMPLE\user01") の名前の下で作成されます。
EXAMPLE\user01 の実行者パスワードを入力してください: *******  ……パスワードの入力

成功: スケジュール タスク "Backup App" は正しく作成されました。



●タスク内容の確認

 作成したタスクの内容は、引数なしでschtasksコマンドを実行すると表示されるし、「schtasks /query /v」コマンドなどを使ってさらに詳細に表示させることもできる。

C:\>schtasks

タスク名                             次回の実行時刻           状態
==================================== ======================== ===============
Backup App                           04:00:00, 2005/06/21



●タスクの削除

 タスクを削除するには、「schtasks /delete」コマンドを利用する。引数には「/tn タスク名」を付け、削除対象のタスクを指定する。

C:\>schtasks /delete /tn "Backup App"
警告: タスク "Backup App" を削除しますか (Y/N) ? y  ……確認の入力
成功: スケジュール タスク "Backup App" は正しく削除されました。



●タスク内容の変更

 タスクの設定内容を変更するには、「schtasks /change」コマンドが利用できるが、このコマンドでは実行するプログラムや実行アカウントの変更しかできない。実行スケジュールは変更できないので、必要ならばタスクをいったん削除してから再作成するか、GUIの[タスク]管理ツールを利用して修正する。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。