SCHTASKS(タスクスケジューラ)
「毎日決まった時間にバックアップを実行したい」「PC 起動時に特定のスクリプトを自動実行したい」といった定期実行のニーズは、実務でよく発生します。
SCHTASKS コマンドを使用すると、Windows のタスクスケジューラをコマンドラインから操作し、バッチファイルやプログラムのスケジュール実行を設定できます。
タスクを作成する(/CREATE)
基本構文
SCHTASKS /CREATE /TN "タスク名" /TR "実行するコマンド" /SC スケジュール種別 [オプション]
| パラメータ | 説明 |
|---|---|
/TN | タスクの名前 |
/TR | 実行するプログラムやバッチファイルのパス |
/SC | スケジュールの種別(DAILY, WEEKLY, ONCE 等) |
/ST | 開始時刻(HH:MM 形式) |
/SD | 開始日(YYYY/MM/DD 形式) |
/MO | 間隔・修飾子(「3日おき」の 3 など) |
/D | 曜日または日付(WEEKLY・MONTHLY で使用) |
/RU | タスクを実行するユーザーアカウント |
/RL | 実行レベル(HIGHEST で管理者権限) |
/F | 同名のタスクがあっても警告なしで上書きする |
/SD などの日付形式は、Windows の地域設定によって異なる場合があります。日本語環境では YYYY/MM/DD で指定しますが、エラーになる場合は schtasks /create /? で表示される形式を確認してください。
スケジュール種別一覧
| 種別 | 説明 |
|---|---|
MINUTE | 指定した分間隔で実行 |
HOURLY | 指定した時間間隔で実行 |
DAILY | 毎日または指定日間隔で実行 |
WEEKLY | 毎週指定した曜日に実行 |
MONTHLY | 毎月指定した日に実行 |
ONCE | 一度だけ実行 |
ONSTART | システム起動時に実行 |
ONLOGON | ログオン時に実行 |
ONIDLE | アイドル時に実行(/I でアイドル時間(分)の指定が必須) |
毎日決まった時間に実行する
schtasks /create /tn "DailyBackup" /tr "C:\Scripts\backup.cmd" /sc daily /st 23:00
数日おきに実行する
/MO オプションで間隔を指定できます。
schtasks /create /tn "CleanupTask" /tr "C:\Scripts\cleanup.cmd" /sc daily /mo 3 /st 02:00
数分・数時間おきに実行する
MINUTE と HOURLY は /MO で間隔を指定します。
schtasks /create /tn "HealthCheck" /tr "C:\Scripts\check.cmd" /sc minute /mo 30
schtasks /create /tn "SyncTask" /tr "C:\Scripts\sync.cmd" /sc hourly /mo 2
毎週指定した曜日に実行する
/D オプションで曜日を指定します。
schtasks /create /tn "WeeklyReport" /tr "C:\Scripts\report.cmd" /sc weekly /d MON,FRI /st 09:00
| 曜日の指定 | 意味 |
|---|---|
MON | 月曜日 |
TUE | 火曜日 |
WED | 水曜日 |
THU | 木曜日 |
FRI | 金曜日 |
SAT | 土曜日 |
SUN | 日曜日 |
毎月指定した日に実行する
/SC MONTHLY と /D で日付を指定します。
schtasks /create /tn "MonthlyJob" /tr "C:\Scripts\monthly.cmd" /sc monthly /d 1 /st 06:00
スペースを含むパスを指定する
/TR のパスにスペースが含まれる場合は、パスを \" で囲んでエスケープします。囲まないと、スペースの前までがプログラム名として扱われ、タスクが実行されません。
schtasks /create /tn "MyTask" /tr "\"C:\My Scripts\backup.cmd\"" /sc daily /st 23:00
PC 起動時・ログオン時に実行する
システム起動時
schtasks /create /tn "StartupScript" /tr "C:\Scripts\startup.cmd" /sc onstart /ru SYSTEM
ログオン時
schtasks /create /tn "LoginScript" /tr "C:\Scripts\login.cmd" /sc onlogon
/RU オプションでタスクを実行するユーザーアカウントを指定できます。SYSTEM
を指定すると、ユーザーがログオンしていなくてもタスクが実行されます。/RU を省略した場合は、コマンドを実行したユーザーとして登録され、そのユーザーがログオンしているときだけ実行されます。SYSTEM での登録には管理者権限が必要です。
管理者権限が必要な処理を実行するタスクには、/RL HIGHEST を付けて登録します。
一度だけ実行する
schtasks /create /tn "OneTimeTask" /tr "C:\Scripts\migrate.cmd" /sc once /st 03:00 /sd 2027/03/15
登録済みのタスクを一覧表示する(/QUERY)
schtasks /query /tn "DailyBackup" /fo list

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
すべてのタスクを一覧表示
schtasks /query /fo table
CSV 形式で出力
schtasks /query /fo csv > tasks.csv
詳細な情報(実行するコマンドや前回の実行結果など)を確認したいときは /V を付けます。
schtasks /query /tn "DailyBackup" /v /fo list
/FO
オプションで出力形式を指定できます。TABLE(テーブル)、LIST(リスト)、CSV(カンマ区切り)の
3 種類があります。
タスクを削除する(/DELETE)
schtasks /delete /tn "DailyBackup" /f
/F オプションを付けると、確認プロンプトなしで削除されます。
タスクを無効化・変更する(/CHANGE)
タスクを削除せずに一時的に止めたいときは、/CHANGE で無効化します。再開するときは /ENABLE を指定します。
schtasks /change /tn "DailyBackup" /disable
schtasks /change /tn "DailyBackup" /enable
タスクを手動で実行する(/RUN)
登録済みのタスクを即座に実行するには /RUN を使用します。
schtasks /run /tn "DailyBackup"
タスクを終了する(/END)
実行中のタスクを停止するには /END を使用します。
schtasks /end /tn "DailyBackup"
実践例:バックアップの自動化
以下の例では、バックアップバッチファイルを作成し、タスクスケジューラに登録するまでの一連の流れを示します。
@echo off
setlocal
rem バックアップスクリプトの作成先
set SCRIPT_PATH=C:\Scripts\daily_backup.cmd
if not exist "D:\Backup\Logs" mkdir "D:\Backup\Logs"
rem バックアップスクリプトを作成
echo @echo off > "%SCRIPT_PATH%"
echo robocopy "C:\Users\user\Documents" "D:\Backup\Documents" /MIR /R:3 /W:5 /LOG+:"D:\Backup\Logs\backup.log" /NP >> "%SCRIPT_PATH%"
rem タスクスケジューラに登録
schtasks /create /tn "AutoBackup" /tr "%SCRIPT_PATH%" /sc daily /st 23:00 /f
echo セットアップが完了しました。
echo 毎日 23:00 にバックアップが自動実行されます。
endlocal
SCHTASKS コマンドでタスクを作成・削除するには、管理者権限が必要な場合があります。「アクセスが拒否されました」というエラーが出る場合は、管理者としてコマンドプロンプトを起動してください。
まとめ
| 操作 | コマンド |
|---|---|
| タスクの作成 | schtasks /create /tn "名前" /tr "パス" /sc 種別 /st 時刻 |
| タスクの一覧表示 | schtasks /query |
| タスクの削除 | schtasks /delete /tn "名前" /f |
| タスクの手動実行 | schtasks /run /tn "名前" |
| タスクの停止 | schtasks /end /tn "名前" |
| タスクの無効化 | schtasks /change /tn "名前" /disable |