web-dev-qa-db-ja.com

Batファイルを使ってWindowsをシャットダウン、再起動、またはログオフするにはどうすればよいですか?

私は リモートデスクトップ接続 を使ってワークステーションに入りました。しかし、この環境では、スタートメニューの電源オプションを使用することはできません。シャットダウンまたは再起動するための代替方法が必要です。

コマンドラインからコンピュータの電源状態を制御する方法

635
Keng

shutdown コマンドを使用する最も一般的な方法は次のとおりです。

  • shutdown -s - シャットダウンします。
  • shutdown -r - 再起動します。
  • shutdown -l - ログオフします。
  • shutdown -h - 休止状態.

    注: ユーザーが-hは「help」を意味すると考える一般的な落とし穴があります(これは、他のすべてのコマンドラインプログラムでも同様です... shutdown.exeは「休止状態」を意味します)。その後、shutdown -hを実行し、誤ってコンピュータの電源を切ります。気を付けろ。

  • shutdown -i - "対話モード"アクションを実行する代わりに、GUIダイアログを表示します。

  • shutdown -a - 直前のシャットダウンコマンドを中止します。

上記のコマンドは、これらの追加オプションと組み合わせることができます。

  • -f - プログラムを強制終了します。シャットダウンプロセスが動かなくなるのを防ぎます。
  • -t <seconds> - シャットダウンまでの時間を設定します。すぐにシャットダウンするには-t 0を使用してください。
  • -c <message> - シャットダウンメッセージを追加します。メッセージはイベントログに記録されます。
  • -y - すべてのシャットダウンクエリに対して "yes"の回答を強制します。

    注: このオプションは公式文書には文書化されていません。 これらのStackOverflowユーザー によって発見されました。


私は他のいくつかの本当に良い答えもこれと一緒に言及されていることを確認したいです。ここではそれらは特定の順序ではありません。

1141
Keng

リモートマシンを使っている場合は、 force リブートに-fオプションを追加することもできます。そうでないと、セッションが終了し、頑固なアプリケーションがシステムをハングさせる可能性があります。

すぐに再起動したい場合はいつでもこれを使用します。

shutdown -t 0 -r -f

「親切に時間を過ごす」という選択肢のために、これを使うことができます。

shutdown -t 30 -r

あなたがコメントで見ることができるように、-fはタイムアウトによって暗示されます。

Brutus 2006はこれらのオプションのためのGUIを提供するユーティリティです。

374
JosephStyons

リモートシャットダウンのための-mオプションに言及した人はいません。

shutdown -r -f -m \\machinename

また:

  • -rパラメータは再起動を引き起こします(物理的に起動するのは難しいかもしれないので、通常これはリモートマシン上で必要なものです)。
  • -fパラメータオプションは再起動を強制します。
  • もちろんリモートマシンをシャットダウンするには適切な権限が必要です。
81
Kip

オリジナルの答え:2008年10月

あなたはまたすべてを手に入れました "rundll32.exe Shell32.dll" セリエ:

(下記のアップデートをご覧ください)

  • rundll32.exe user.exe,**ExitWindows** [Windowsの高速シャットダウン]
  • rundll32.exe user.exe,**ExitWindowsExec** [Windowsを再起動してください]

    rundll32.exe Shell32.dll,SHExitWindowsEx n
    

ここでnは:を表します。

  • 0 - LOGOFF
  • 1 - SHUTDOWN
  • 2 - REBOOT
  • 4 - FORCE
  • 8 - POWEROFF

(組み合わせることができます - > 6 = 2 + 4 FORCE REBOOT


2015年4月に更新(6年以上後):

1800年の情報 /親切に指摘 コメント内

この目的でrundll32.exeを使用しないでください。あなたがコマンドラインで渡した関数が非常に特定のメソッドシグネチャを持っていることを期待します - それはExitWindowsのメソッドシグネチャと一致しません。

Raymond CHEN は書きました:

rundll32.exeによって呼び出される関数に必要な関数シグネチャは次のとおりです。

void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
       LPSTR pszCmdLine, int nCmdShow);

rundll32rundll32のようにuser32 LockWorkStationによって呼び出されるようには設計されていないランダム関数を呼び出すためにuser32 ExitWindowsExを使うことを人々が止めているわけではありません。

(おっとっと)

ExitWindowsExの実際の関数シグネチャは次のとおりです。

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

そしてそれを明瞭にするために:

Rundll32はWindows 95からの残り物です、そしてそれは現代の工学ガイドラインの多くに違反するので少なくともWindows Vista以来それが非難されました。

37
VonC

もう一つのちょっとしたコツ:バッチファイルのルートを移動するとき、誤って実行した場合に備えて、それを中止できるようにしたいと思います。そのため、バッチファイルはシャットダウンを呼び出しますが、後でコマンドプロンプトであなたを残します。

@echo off
echo Shutting down in 10 seconds. Please type "shutdown /a" to abort.
cmd.exe /K shutdown /f /t 10 /r

さらに、それはタイマーを使っているので、 The Oregon Trail で狩るときと同じようなスリルを得ることができます。

9
Gavin

ただし、スタートメニューのShutdownDisconnect Sessionまたはのようなものに置き換えられます。それは、「Windowsセキュリティ」と呼ばれるものもあるはずです。 Ctrl + Alt + End オーウェンが指摘したように。

7
Carl

あなたはおそらくこれを知っているでしょうが、念のために、 "Run"ボックスにshutdown -r(あるいは好きなコマンド)をタイプしてenterを押すほうがずっと簡単です。

バッチファイルをあちこちに置いておくことを節約できます。

7
Dean Rather

私はパーティーに遅刻しました、しかしこの答えをまだ見ていませんでした。バッチファイルを使用したくない場合、またはコマンドを入力したくない場合。あなただけのデスクトップにフォーカスを設定してから使用することができます Alt + F4

何をしたいのかを尋ねるウィンドウが表示されたら、シャットダウンまたは再起動を選択します。

スクリーンショットとビデオについてさえも参照してください。 https://tinkertry.com/how-to-shutdown-or-restart-windows-over-rdp

5
msoft

私はこれを Notepad または WordPad に書きます。これは基本的なログオフコマンドです。

@echo off
shutdown -l

これは基本的に手動で開始とログオフをクリックするのと同じですが、バッチファイルの準備ができていればほんの少し速くなります。

4
Grant