Post

Windowsをバッチからシャットダウンしようとすると無限ループする

現象

下図のようにシャットダウンコマンドが無限ループします。

Alt text

以下の手順で再現することができます。

  1. メモ帳を開く
  2. shutdown /s /t 0と書いて保存
  3. shutdown.batという名前で保存
  4. そのファイルをダブルクリックする

解決方法

以下の解決方法のどちらかでOKです。

ファイル名を変える

shutdown.batというファイル名を例えば終了.batとすればよいです。

コマンドを変える

どうしても名前を変えたくない場合は、終了コマンドをshutdown /s /t 0shutdown.exe /s /t 0とすればよいです。

何が起こっていたのか

shutdownコマンドとshutdown.batというファイル名が競合していることが原因でした。

コマンドの優先順位は、(実際にはほかにもルールはあると思いますが)同一フォルダのバッチを探すシステムのコマンドを探すとなっています。shutdownコマンドが呼ばれたとき、Windowsを終了するコマンドを探索する前に、同ディレクトリにあるshutdown.batが呼ばれて無限ループしていることが原因でした。

This post is licensed under CC BY 4.0 by the author.