UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

atコマンドでスケジュール実行


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サービス開始するよう設定するには,手次の順で行える.

  1. [コントロールパネル]を開く.
  2. [サービス]を開く.
  3. [サービス]画面内のリストボックスに[Schedule]という項目が並ん でいるので,それを選択する.(ABC順に並んでいるので最後の方にある)
  4. [スタートアップ]ボタンを選択する.
  5. [スタートアップの種類][自動]にし,[ログオン][システムアカウント]にする.
  6. [OK]ボタンを押す.
  7. [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 タスク スケジューラを使用してプログラムを自動的に起動させる方法
      • 使い方について.

広告スペース
Google