atコマンドでスケジュール実行
0.改訂履歴
- 1996.12.02 初版
- 1997.04.03 誤字脱字修正.バックアップ時間例の追加.
- 1999.11.11 「バックアップの方法」からatコマンドだけを切り出した
- 1999.11.21 NT4.0での記述方法とTask Schedulerについて追加
1.はじめに
NTで,定期的にコマンドを実行させる場合,スケジュールサービスとatコマンドを使う.
atコマンドは,よく“えーてぃこまんど”と発音されるが,“あっとこまんど”である.
2.使い方
2.1.文法
atコマンドの使い方は"/?"オプションを使って実行する事で表示される.
D:\>at /? AT コマンドは、指定した日時にコマンドとプログラムがコンピュータで 実行されるようにスケジュールします。AT コマンドを使用するには、 Schedule サービスが 実行中でなければなりません。 AT [\\コンピュータ名] [ [id] [/DELETE] | /DELETE [/YES]] AT [\\コンピュータ名] 時刻 [/INTERACTIVE] [ /EVERY:日付[,...] | /NEXT:日付[,...]] "コマンド" \\コンピュータ名 リモート コンピュータを指定します。このパラメータを 省略したときは、ローカル コンピュータでコマンドが スケジュールされます。 id スケジュールされたコマンドに割り当てられた識別番号です。 /delete スケジュールされたコマンドを取り消します。 id を指定しなかったときは、コンピュータでスケジュール されているすべてのコマンドが取り消されます。 /yes 確認せずにすべてのジョブ コマンドを取り消すときに 使用します。 時刻 コマンドが実行される時刻を指定します。 /interactive ジョブの実行中、ジョブはログオンしているユーザーの デスクトップとの対話を許可します。 /every:日付[,...] 毎週指定した曜日に、または毎月指定した日にコマンドが 実行されます。 日付を省略したときは、その月の今日の日付が使用されます。 /next:日付[,...] 指定したコマンドが次の日付 (たとえば、次の火曜日) に 実行されます。日付を省略したときは、その月の今日の日付が 使用されます。 "コマンド" 実行したい Windows NT コマンド、またはバッチ プログラムです。 |
2.2.登録サンプル
D:\>date 現在の日付は 1999/11/21 日 ←現在の日時を確認 新しい日付を入力してください: (年-月-日) D:\>time 現在の時刻は 18:21:32.62 新しい時刻を入力してください: ←現在の日時を確認 D:\>at 16:00 calc.exe ←すでに過ぎている時間を指定 新しいジョブをジョブ ID = 1 で追加しました。 D:\>at 20:00 "notepad.exe" ←まだ過ぎていない時間を指定 新しいジョブをジョブ ID = 2 で追加しました。 D:\>at ステータス ID 日付 時刻 コマンドライン ------------------------------------------------------------------------------- 1 次 22 午後 04:00 calc.exe 2 次 21 午後 08:00 notepad.exe |
過ぎている時間を指定すると,次のそのタイミングがくる時(この場合,次の日の22日)に登録されていることが分かる.
D:\>at 20:00 /every:20,21,22 notepad.exe ←毎月20,21,22日に実行 新しいジョブをジョブ ID = 1 で追加しました。 D:\>at 20:00 /next:10 calc.exe ←次の10日に実行 新しいジョブをジョブ ID = 2 で追加しました。 D:\>at ステータス ID 日付 時刻 コマンドライン ------------------------------------------------------------------------------- 1 毎 20 21 22 午後 08:00 notepad.exe 2 次 10 午後 08:00 calc.exe |
複数の日付けを指定する時は,カンマで区切って指定する.
これで分かる通り,“何月何日”という指定はできない.
D:\>at 20:00 /next:m notepad.exe 新しいジョブをジョブ ID = 1 で追加しました。 D:\>at ステータス ID 日付 時刻 コマンドライン ------------------------------------------------------------------------------- 1 次 月曜日 午後 08:00 notepad.exe D:\>at 20:00 /every:m,t,w,th,f,s,su notepad.exe 新しいジョブをジョブ ID = 2 で追加しました。 D:\>at ステータス ID 日付 時刻 コマンドライン ------------------------------------------------------------------------------- 1 次 月曜日 午後 08:00 notepad.exe 2 毎 月曜日 火曜日... 午後 08:00 notepad.exe |
指定する曜日は,次のキーワードとなる.
曜日 | キーワード |
---|---|
日曜日 | su |
月曜日 | m |
火曜日 | t |
水曜日 | w |
木曜日 | th |
金曜日 | f |
土曜日 | s |
2.3.ジョブの詳細表示
スケジュール項目(曜日とか日付)を多く登録していると一覧に表示されないので,その場合はatコマンドにタスクIDを指定することで,詳細表示が可能になる.
D:\>at ステータス ID 日付 時刻 コマンドライン ------------------------------------------------------------------------------- 1 次 月曜日 午後 08:00 notepad.exe 2 毎 月曜日 火曜日... 午後 08:00 notepad.exe D:\>at 2 タスク ID: 2 ステータス: OK スケジュール: 毎 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日 日曜日 時刻: 午後 08:00 対話: No コマンド: notepad |
2.4.ジョブの消去
登録したジョブは,次のタイミングで消去される.
- ジョブが完了したとき(Every指定がある場合は消されない)
- atコマンドでジョブが消去された時
再起動やScheduleサービスを停止しても消えない.
D:\>at ステータス ID 日付 時刻 コマンドライン ------------------------------------------------------------------------------- 2 次 10 午後 08:00 calc.exe 3 次 21 午後 08:00 notepad.exe 4 次 21 午後 08:00 notepad.exe D:\>at 3 /delete D:\>at ステータス ID 日付 時刻 コマンドライン ------------------------------------------------------------------------------- 2 次 10 午後 08:00 calc.exe 4 次 21 午後 08:00 notepad.exe |
D:\>at ステータス ID 日付 時刻 コマンドライン ------------------------------------------------------------------------------- 2 次 10 午後 08:00 calc.exe 3 次 21 午後 08:00 notepad.exe 4 次 21 午後 08:00 notepad.exe D:\>at /delete この操作はスケジュールしたすべてのジョブを削除します。 この操作を続行しますか? (Y/N) [N]: y D:\>at 一覧にエントリが存在しません。 |
D:\>at ステータス ID 日付 時刻 コマンドライン ------------------------------------------------------------------------------- 2 次 10 午後 08:00 calc.exe 3 次 21 午後 08:00 notepad.exe 4 次 21 午後 08:00 notepad.exe D:\>at /delete /yes D:\> |
3.サービスが開始していません
atコマンドを実行した時,次のようなエラーが表示されることがある.
D:\>at サービスが開始していません。 D:\> |
atコマンドは,ジョブを登録するツールで,登録されたジョブを実行する為のScheduleサービスが稼動していなければならない.
WindowsNTをインストールした直後だと,このScheduleサービスが稼動していないので,これを稼動させる必要がある.
WindowsNTが再起動されても自動的にScheduleサービス開始するよう設定するには,手次の順で行える.
- [コントロールパネル]を開く.
- [サービス]を開く.
- [サービス]画面内のリストボックスに[Schedule]という項目が並ん でいるので,それを選択する.(ABC順に並んでいるので最後の方にある)
- [スタートアップ]ボタンを選択する.
- [スタートアップの種類]を[自動]にし,[ログオン] は[システムアカウント]にする.
- [OK]ボタンを押す.
- [Schedule]サービスを選択した状態で[開始]ボタンを押すと,直ち にサービスが開始される. サーバのリブートは不要である.
なお,Internet Explorer4.0以降を導入すると,この「Scheduleサービス」は「Task Scheduler」へとバージョンアップされるので,サービス名が異なる事に注意する.
4.NT4.0での記述方法について
atコマンドの記述方法で,NTのバージョンによって動作が異なる場合がある.
主たる例を次にまとめる.
記述例 | SP3 | SP4 |
---|---|---|
at 0:00 shutdown /L /R /Y |
○ |
○ |
at 0:00 cmd /c "del *.*" |
○ |
○ |
at 0:00 "cmd /c del *.*" |
× |
○ |
上記のように,内部コマンド(この場合cmd)を使う場合に,ダブルクォーテーションの用法が異なるので注意する.
5.タスクスケジューラについて
IE4.0以降をインストールすると,Scheduleサービスが,Task Schedulerに置き換わる.
大きく次のような点で異なる.
項目 | Scheculeサービス | タスクスケジューラ |
---|---|---|
サービスが稼動するアカウント | システムアカウント(デフォルト) 任意に設定可能. |
システムアカウント.変更不可. |
スケジュールの登録方法 | atコマンド | atコマンド タスクウィザード |
権限 | Scheduleサービスを稼動させているアカウントの権限 | 登録したジョブ毎にアカウント権限を設定可能 |
ジョブの格納方法 | レジストリに登録.再編集不可. 一旦削除し,登録する. | .jobファイルの編集によっって再編集可能. |
ジョブの繰り返し | 毎月〜日,毎週〜曜日,次の〜日,次の〜曜日. | 10分置きに繰り返すなどのより高度な設定が可能. |
参考資料
- J013413 AT コマンドの使用に関する注意事項
- GUIアプリケーションを実行する際の注意点
- 内部コマンドを使用する場合の注意点
- システムアカウントでネットワークドライブをマウントする方法
- ダブルクォーテーションの用法について
- J043441 タスク スケジューラで設定したタスクが実行されない場合
- タスクスケジューラについて
- J030656 Internet Explorer 4.0 の追加コンポーネントを追加・削除する方法
- J042857 Internet Explorer 4.01 の追加コンポーネントの一覧
- IE4.0以上を導入したWindowsNT4.0で追加されることが分かる.
- Windows98ではデフォルトで持っている.
- J043183 タスク スケジューラを使用してプログラムを自動的に起動させる方法
- 使い方について.