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管理人



コメント