※本ページにはプロモーション(広告)が含まれています
Windows 11のshutdownコマンドに「明日の特定時刻」に電源を切る設定をしようとしたところ、エラーが発生したり、意図した時刻に電源が切れなかったりした経験はありませんか?コマンドプロンプトやPowerShellからshutdownコマンドに時刻パラメータを指定するのは、実はいくつかの落とし穴があります。
本記事では、Windows 11のshutdownコマンドで時刻指定(特に「明日」指定)が失敗する原因を詳しく分析し、確実に動作する代替手段と正しい書き方を解説します。タスクスケジューラを使った確実な方法も合わせて紹介します。

この記事でわかること
- Windows 11のshutdownコマンドで時刻指定が失敗する根本的な原因
- shutdownコマンドの時刻パラメータの正しい書き方
- 「明日○時にシャットダウン」を実現するコマンド例
- タスクスケジューラを使った確実な予約シャットダウンの設定方法
- よくある間違いと正しい構文の対応表
shutdownコマンドの時刻パラメータとは
Windowsのshutdownコマンドには、シャットダウンを遅延実行するためのパラメータがいくつか用意されています。代表的なものが/t(遅延秒数指定)です。これは現在時刻からの秒数でシャットダウンタイミングを指定するものです。
一方、「明日の○時に」という絶対時刻でシャットダウンを予約したい場合、shutdownコマンド単体では対応していません。多くの方が誤解しているのが、「/t 時刻」のように時刻を直接指定できると思っているケースです。実際のshutdownコマンドの/tパラメータは「秒数」のみを受け付けます。
shutdownコマンドの主なパラメータ
| パラメータ | 説明 | 例 |
|---|---|---|
/s |
シャットダウン | shutdown /s |
/r |
再起動 | shutdown /r |
/t 秒数 |
指定秒数後に実行(0〜315360000) | shutdown /s /t 3600(1時間後) |
/f |
実行中アプリを強制終了 | shutdown /s /f /t 0 |
/c コメント |
理由コメントを追加 | shutdown /s /c “メンテナンス” |
/a |
予約キャンセル | shutdown /a |
「明日」指定が失敗する主な原因
原因1:shutdownコマンドに「時刻指定」パラメータは存在しない
最も多い誤解が「shutdown /s /t 22:00」のように時刻を直接指定しようとするケースです。shutdownコマンドの/tは「秒数」のみを受け付けます。「22:00」のような時刻文字列を渡すとエラーが発生します。
エラー例:
コマンドの値が正しくありません。
Opc: 22:00
原因2:秒数の計算ミス
/tに秒数を指定する場合、現在時刻から目標時刻までの差を秒単位で計算する必要があります。この計算を誤ると意図した時刻にシャットダウンされません。また、最大値は315,360,000秒(約10年)ですが、大きすぎる値はWindows 11では正常に処理されない場合があります。
原因3:PowerShellで「明日」を計算するスクリプトの構文エラー
PowerShellを使って「明日の22時」を計算してshutdownコマンドに渡そうとする場合、日付計算の構文ミスがよく発生します。特に日本語環境での日時書式(ロケール依存)が原因でパースに失敗するケースがあります。
原因4:タスクスケジューラの設定ミス
Windowsの「タスクスケジューラ」を使えば絶対時刻でshutdownを予約できますが、設定が複雑なため間違いが起きやすいです。「トリガー」の設定や「アクション」の実行ファイルパスが間違っていると正常に動作しません。
原因5:管理者権限がない
shutdownコマンドをシステム全体に適用するには管理者権限が必要です。通常ユーザーのコマンドプロンプトから実行するとエラーが発生することがあります。

対処法:確実に「明日の○時」にシャットダウンする方法
対処法1:秒数を手動計算してshutdownコマンドを使う
現在時刻から目標時刻までの秒数を計算して/tに指定する方法です。シンプルですが計算が必要です。
計算式: 目標時刻までの秒数 = (目標時刻 − 現在時刻)× 3600秒/時間
例:現在が20:00で、翌日22:00にシャットダウンしたい場合
差は26時間 = 26 × 3600 = 93,600秒
shutdown /s /t 93600
手順:
- コマンドプロンプトを管理者として開く(スタートメニューで「cmd」を右クリック→「管理者として実行」)
- 現在時刻を確認する
- 目標時刻までの差を時間単位で計算し、3600を掛けて秒数を求める
shutdown /s /t [秒数]を実行する- 予約をキャンセルしたい場合は
shutdown /aを実行する
対処法2:PowerShellで秒数を自動計算してshutdownに渡す(推奨)
PowerShellを使えば、「明日の○時」という形式から秒数を自動計算できます。手動計算のミスがなくなります。
コード例(翌日22:00にシャットダウン):
$target = (Get-Date -Hour 22 -Minute 0 -Second 0).AddDays(1)
$seconds = [int]($target - (Get-Date)).TotalSeconds
shutdown /s /t $seconds
手順:
- PowerShellを管理者として開く(スタートメニューで「PowerShell」を右クリック→「管理者として実行」)
- 上記のコードを貼り付けて実行する(
22の部分を目標時刻の時間に変更する) - 実行すると「シャットダウンの準備をしています」のメッセージが表示される
- キャンセルする場合は
shutdown /aを実行する
同日の特定時刻にシャットダウンしたい場合(例:今日の23:30):
$target = (Get-Date -Hour 23 -Minute 30 -Second 0)
$seconds = [int]($target - (Get-Date)).TotalSeconds
if ($seconds -lt 0) { Write-Host "指定時刻は過去です" } else { shutdown /s /t $seconds }
対処法3:タスクスケジューラで絶対時刻を設定する(最も確実)
タスクスケジューラを使えば、GUIから直感的に「明日の○時」を指定できます。コマンドの知識がなくても設定できるうえ、毎週・毎日のような繰り返し設定も可能です。
手順:
- スタートメニューで「タスクスケジューラ」を検索して開く
- 右側の「操作」パネルから「基本タスクの作成」をクリック
- 名前を入力(例:「明日のシャットダウン」)→「次へ」
- トリガーで「1回のみ」を選択→「次へ」
- 日時を「明日」「23:00」のように設定→「次へ」
- 操作で「プログラムの開始」を選択→「次へ」
- プログラム/スクリプトに
shutdownと入力 - 引数の追加に
/s /f /t 0と入力→「次へ」 - 内容を確認して「完了」をクリック
注意: タスクスケジューラのタスクは「最上位の特権で実行する」にチェックを入れると確実に管理者権限で実行されます。タスクのプロパティを開き、「最上位の特権で実行する」にチェックを入れてください。
対処法4:コマンドでタスクスケジューラに一括登録する
GUIを使わずにコマンドでタスクを登録する方法です。スクリプト化しておくと繰り返し使えます。
PowerShellコード例(翌日22:00にシャットダウンを登録):
$trigger = New-ScheduledTaskTrigger -Once -At "$(([DateTime]::Today).AddDays(1).ToString('yyyy-MM-dd')) 22:00:00"
$action = New-ScheduledTaskAction -Execute "shutdown.exe" -Argument "/s /f /t 0"
Register-ScheduledTask -TaskName "TomorrowShutdown" -Trigger $trigger -Action $action -RunLevel Highest -Force
Write-Host "翌日22:00のシャットダウンを登録しました"
タスクをキャンセルする場合:
Unregister-ScheduledTask -TaskName "TomorrowShutdown" -Confirm:$false
対処法5:バッチファイルで簡単に呼び出せるようにする
よく使うシャットダウン予約をバッチファイルとして保存しておくと、次回から簡単に呼び出せます。
バッチファイルの内容例(shutdown_tomorrow.bat):
@echo off
powershell -Command "$target = (Get-Date -Hour 22 -Minute 0 -Second 0).AddDays(1); $sec = [int]($target - (Get-Date)).TotalSeconds; shutdown /s /t $sec"
echo 翌日22:00にシャットダウンを予約しました
pause
このファイルを管理者として実行するだけで、翌日22:00のシャットダウンが予約されます。

よくある間違いと正しい書き方
| 間違った書き方 | エラー内容 | 正しい書き方 |
|---|---|---|
shutdown /s /t 22:00 |
値が正しくない(秒数以外は無効) | PowerShellで秒数を計算してから指定 |
shutdown /s /t tomorrow 22:00 |
パラメータが無効(文字列不可) | タスクスケジューラを使用 |
shutdown /s /t 2026-04-16T22:00 |
値が正しくない(ISO日時形式は無効) | PowerShellで差分秒数を計算 |
| 管理者権限なしで実行 | アクセスが拒否されました | 右クリック→「管理者として実行」 |
shutdown /s /t -3600(負の値) |
値が正しくない(0以上が必要) | 目標時刻が過去でないか確認 |
方法別 比較
| 方法 | 難易度 | 確実性 | 繰り返し設定 | キャンセル |
|---|---|---|---|---|
| shutdown /t 秒数(手動計算) | ★★☆ | 中(計算ミスのリスク) | 不可 | shutdown /a |
| PowerShell自動計算 | ★★☆ | 高 | 不可(毎回実行が必要) | shutdown /a |
| タスクスケジューラ(GUI) | ★☆☆ | 最高 | 可能 | スケジューラから削除 |
| タスクスケジューラ(コマンド) | ★★☆ | 最高 | 可能 | Unregister-ScheduledTask |
| バッチファイル化 | ★★★ | 高 | 不可(毎回実行が必要) | shutdown /a |
この記事に関連するおすすめ商品
Windows PC用 スマートコンセント(スマートプラグ)
約2,000円〜
アプリから電源のオン・オフをスケジュール設定できる
Windows 11解説本(コマンドプロンプト・PowerShell入門)
約2,500円〜
PowerShellスクリプトの基礎から応用まで学べる解説書
※ 価格は変動します。最新価格はリンク先でご確認ください
よくある質問(FAQ)
Q1. shutdown /s /t に指定できる最大秒数はいくつですか?
Windows 11のshutdownコマンドで/tに指定できる最大値は315,360,000秒です。これは約10年に相当します。ただし、実際にはそれほど長い予約は現実的でないため、数時間〜1日分の秒数を指定するのが一般的です。
Q2. shutdownコマンドを実行した後でキャンセルする方法は?
shutdown /a コマンドを実行するとキャンセルできます。ただし、すでにシャットダウンが開始してしまった後(/t 0 指定時など)はキャンセルできません。予約中(カウントダウン中)の状態であればキャンセル可能です。タスクスケジューラで登録した場合は、タスクスケジューラからタスクを削除するかトリガーを無効にしてください。
Q3. PowerShellスクリプトを実行したら「スクリプトの実行が無効」というエラーが出ました。
これはPowerShellの実行ポリシーが制限されているためです。管理者権限でPowerShellを開き、Set-ExecutionPolicy RemoteSigned -Scope CurrentUser を実行してから再試行してください。リモートからダウンロードしたスクリプトには署名が必要ですが、直接入力したコマンドはそのまま実行できます。
Q4. タスクスケジューラで登録したシャットダウンタスクを毎日同じ時刻に繰り返す設定にできますか?
はい、可能です。タスクスケジューラでタスクを作成する際、トリガーの設定で「毎日」を選択し、実行する時刻を指定することで毎日同じ時刻に自動シャットダウンを設定できます。また「週に1回」「月に1回」などの設定も可能です。
Q5. タスクスケジューラのシャットダウンタスクがスリープ状態から復帰して実行されない。
タスクスケジューラのタスクを設定する際、「条件」タブで「このタスクを実行するためにスリープを解除する」にチェックを入れることで、スリープ中でもタスクが実行される直前にスリープから復帰するようになります。
Q6. スクリプトを実行したが、シャットダウンが実際には起きなかった。ログで確認できますか?
タスクスケジューラで登録したタスクの場合、「タスクスケジューラ」を開き、対象タスクのプロパティから「履歴」タブを確認することでエラーの詳細を確認できます。shutdownコマンドを直接実行した場合は、イベントビューアーの「Windowsログ」→「システム」から「Shutdown」をキーワードに検索することでログを確認できます。
Q7. 「明日」だけでなく「3日後」「1週間後」のシャットダウン予約もPowerShellで設定できますか?
はい、PowerShellのAddDays()のパラメータを変更するだけで対応できます。3日後なら.AddDays(3)、1週間後なら.AddDays(7)と指定してください。ただし、shutdown /t コマンドで指定できる最大秒数(315,360,000秒 ≒ 10年)を超えない範囲での設定が必要です。
まとめ
Windows 11のshutdownコマンドで「明日の○時」という時刻指定が失敗するのは、/tパラメータが「秒数のみ」を受け付けるという仕様を知らないことによる誤用が最も多い原因です。時刻文字列をそのまま渡してもエラーになります。
解決策のポイントをまとめると:
- shutdown /t は秒数のみ:「22:00」のような時刻文字列は使えない
- PowerShellで秒数を自動計算:
Get-Dateを使って差分を秒単位で求めてから渡す - タスクスケジューラが最も確実:GUIから「明日の○時」と直接指定でき、繰り返し設定も可能
- 管理者権限を忘れずに:shutdownコマンドは管理者権限が必要
- 予約キャンセルは shutdown /a:実行前なら取り消し可能
技術的な知識に不安がある方は、GUIで操作できるタスクスケジューラを使うのが最もミスが少なくお勧めです。一度設定しておけば毎日・毎週の繰り返し予約も簡単にできます。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!