How do I shutdown, restart, or log off Windows via a bat file?
我一直在使用远程桌面连接进入工作站。但是在这种环境中,我不能使用"开始"菜单中的电源选项。我需要另一种方法来关闭或重新启动。
如何通过命令行控制计算机的电源状态?
使用
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的实用程序。
没有人提到远程停机的
1 | shutdown -r -f -m \\machinename |
。
也:
-r 参数导致重新启动(这通常是远程机器上需要的,因为物理启动可能很困难)。-f 参数选项强制重新启动。- 当然,您必须具有关闭远程计算机的适当权限。
原始答案:2008年10月
您还获得了所有
(见下文更新)
rundll32.exe user.exe,**ExitWindows** [窗口快速关闭]rundll32.exe user.exe,**ExitWindowsExec** [重新启动Windows]1rundll32.exe shell32.dll,SHExitWindowsEx n
其中
- 0-
LOGOFF 。 - 1-
shutdown 。 - 2-
REBOOT 。 - 4-
FORCE 。 - 8-
POWEROFF 。
(可组合->6=2+4
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 ofExitWindows .
号
陈瑞蒙写道:
- 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 byrundll32 , likeuser32 LockWorkStation oruser32 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 |
另外,因为它是定时的,所以当你在俄勒冈州的小径上狩猎时,你会得到和你一样的刺激。
你可能知道这一点,但以防万一:只需在"运行"框中键入
保存将批处理文件放在任何地方。
当远程连接到计算机时(目标是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 |
。
这与手动单击开始和注销基本相同,但如果准备好批处理文件,则速度稍快。