Windowsバッチファイル

バッチファイルとタスクスケジューラ連携【schtasksで定期実行を自動化】

Windowsバッチファイル
記事内に広告が含まれています。

Windowsのタスクスケジューラとバッチファイルを組み合わせれば、定期実行を完全に自動化できます。schtasks コマンドの使い方を解説します。

schtasksコマンドの基本

操作コマンド説明
タスク作成schtasks /create新しいタスクを登録する
タスク一覧schtasks /query登録済みタスクを表示する
タスク削除schtasks /deleteタスクを削除する
手動実行schtasks /runタスクを今すぐ実行する
有効化/無効化schtasks /changeタスクを有効・無効にする

タスクの登録(schtasks /create)

@echo off

rem 毎日09:00にバックアップを実行
rem /tn = タスク名、/tr = 実行するファイル、/sc = スケジュール種別、/st = 開始時刻
schtasks /create /tn "DailyBackup" /tr "C:\Scripts\backup.bat" /sc DAILY /st 09:00 /f

rem 毎週月曜日の08:30に実行
schtasks /create /tn "WeeklyReport" /tr "C:\Scripts\report.bat" /sc WEEKLY /d MON /st 08:30 /f

rem 毎月1日の夜中02:00に実行
schtasks /create /tn "MonthlyCleanup" /tr "C:\Scripts\cleanup.bat" /sc MONTHLY /d 1 /st 02:00 /f

rem PCログイン時に実行
schtasks /create /tn "LoginTask" /tr "C:\Scripts\startup.bat" /sc ONLOGON /f

rem 指定した間隔で繰り返し実行(毎30分)
schtasks /create /tn "Heartbeat" /tr "C:\Scripts\check.bat" /sc MINUTE /mo 30 /f

よく使うオプション

オプション説明
/tnタスク名(識別子)/tn “DailyBackup”
/tr実行するファイルのパス/tr “C:\Scripts\backup.bat”
/scスケジュール種別DAILY / WEEKLY / MONTHLY / ONLOGON / MINUTE
/st開始時刻(HH:MM形式)/st 09:00
/d曜日や日付/d MON または /d 1
/mo間隔(MODIFIERの略)/mo 30(30分ごと)
/f確認なしに上書き既存タスクがあっても強制上書き
/ru実行ユーザー/ru SYSTEM(システムアカウント)

タスクの確認・削除・手動実行

@echo off

rem タスクの詳細を確認
schtasks /query /tn "DailyBackup" /fo LIST

rem すべてのタスクを一覧表示(CSV形式)
schtasks /query /fo CSV

rem タスクを今すぐ手動実行
schtasks /run /tn "DailyBackup"

rem タスクを無効化
schtasks /change /tn "DailyBackup" /DISABLE

rem タスクを有効化
schtasks /change /tn "DailyBackup" /ENABLE

rem タスクを削除(確認なし)
schtasks /delete /tn "DailyBackup" /f

まとめ

  • schtasks /createでタスクを登録。/scでスケジュール種別、/stで時刻を指定する
  • /fオプションで確認なしに上書き登録できる
  • schtasks /runで登録したタスクを即時実行してテストできる
  • GUIのタスクスケジューラ画面でも確認・管理できる

タスクスケジューラを使い始めた頃、バッチファイルのパスを相対パスで書いてしまいタスクが失敗することが続きました。schtasksで登録するバッチファイルのパスは必ずフルパスで書く、もしくは %~dp0 を使うことで解決しました。

hobbyshift管理人

コメント

タイトルとURLをコピーしました