如何通过bat文件关闭,重启或注销Windows?

How do I shutdown, restart, or log off Windows via a bat file?

我一直在使用远程桌面连接进入工作站。但是在这种环境中,我不能使用"开始"菜单中的电源选项。我需要另一种方法来关闭或重新启动。

如何通过命令行控制计算机的电源状态?


使用shutdown命令的最常见方法是:

  • shutdown -s关闭。
  • shutdown -r重新启动。
  • shutdown -l注销。
  • shutdown -h休眠。

    注:有一个常见的陷阱,用户认为-h的意思是"帮助"(它对其他所有命令行程序都是这样做的)。除shutdown.exe外,它的意思是"休眠")。然后他们运行shutdown -h,意外地关闭了电脑。小心点。

  • shutdown -i-"交互模式"。它不执行操作,而是显示一个GUI对话框。

  • shutdown -a—中止先前的关机命令。

上面的命令可以与这些附加选项结合使用:

  • -f迫使程序退出。防止停机过程卡住。
  • -t —设置关闭前的时间。使用-t 0立即停机。
  • -c —添加关机信息。消息将在事件日志中结束。
  • -y—强制"是"回答所有停机查询。

    注意:此选项未记录在任何正式文档中。它是由这些stackoverflow用户发现的。

我想确保其他一些很好的答案也与这个一起提到。它们在这里没有特殊的顺序。

  • Josephstyons的-f期权
  • 使用VONC的rundll32
  • 迪恩的跑动箱
  • 从KIP远程关闭


如果您在远程计算机上,您可能还需要添加-f选项以强制重新启动。否则,您的会话可能会关闭,顽固的应用程序可能会挂起系统。

每当我想强制立即重新启动时,我都会使用此选项:

1
shutdown -t 0 -r -f

对于更友好的"给他们一些时间"选项,您可以使用:

1
shutdown -t 30 -r

正如您在注释中看到的,超时暗示了-f。

Brutus2006是一个为这些选项提供GUI的实用程序。


没有人提到远程停机的-m选项:

1
shutdown -r -f -m \\machinename

也:

  • -r参数导致重新启动(这通常是远程机器上需要的,因为物理启动可能很困难)。
  • -f参数选项强制重新启动。
  • 当然,您必须具有关闭远程计算机的适当权限。


原始答案:2008年10月

您还获得了所有

(见下文更新)

  • rundll32.exe user.exe,**ExitWindows**[窗口快速关闭]
  • rundll32.exe user.exe,**ExitWindowsExec**[重新启动Windows]

    1
    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信息请在评论中指出:

Don't use rundll32.exe for this purpose. It expects that the function you passed on the command line has a very specific method signature - it doesn't match the method signature of ExitWindows.

陈瑞蒙写道:

  • 2004年,"当您与调用约定不匹配时会发生什么错误?":

The function signature required for functions called by rundll32.exe is:

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

That hasn't stopped people from using rundll32 to call random functions that weren't designed to be called by rundll32, like user32 LockWorkStation or user32 ExitWindowsEx.

(OOPS)

The actual function signature for ExitWindowsEx is:

1
BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);
  • 2011年:"在人行道上扔垃圾:rundll32计划的悲惨历史"

为了让它清晰明了:

  • 2013年,"关于何时使用rundll32的指南是什么?简单:不要使用它":

Rundll32 is a leftover from Windows 95, and it has been deprecated since at least Windows Vista because it violates a lot of modern engineering guidelines.


另一个小提示:当执行批处理文件路由时,我希望能够在意外运行时中止它。因此,批处理文件会调用关机,但会在随后的命令提示符处留下您。

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

另外,因为它是定时的,所以当你在俄勒冈州的小径上狩猎时,你会得到和你一样的刺激。


你可能知道这一点,但以防万一:只需在"运行"框中键入shutdown -r(或任何你喜欢的命令),然后点击回车,就容易多了。

保存将批处理文件放在任何地方。


当远程连接到计算机时(目标是Windows XP;我不确定目标是Windows Vista),尽管"开始"菜单上的"关机"被断开连接会话或类似的会话替换,但应该有一个名为"Windows安全性"的操作与ctrl+alt+endakbd所指的操作相同。欧文。


我参加晚会迟到了,但还没有看到这个答案。当您不想使用批处理文件或键入命令时。您可以将焦点设置到桌面,然后使用alt+f4

Windows将询问您要做什么,选择关机或重新启动。

有关屏幕截图甚至视频,请参阅:https://tinkertry.com/how-to-shutdown-or-restart-windows-over-rdp


我将在记事本或写字板中编写此命令,以获取基本注销命令:

1
2
@echo off
shutdown -l

这与手动单击开始和注销基本相同,但如果准备好批处理文件,则速度稍快。