ChatGPT解决这个技术问题 Extra ChatGPT

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

我一直在使用 Remote Desktop Connection 进入工作站。但是在这种环境下,我无法使用开始菜单中的电源选项。我需要另一种关闭或重新启动的方法。

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


M
MultiplyByZer0

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

shutdown -s — 关闭。

shutdown -r — 重新启动。

shutdown -l — 注销。

关机 -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 只是我使用了 /<switch> 而不是 -<switch>。帮助部分也使用 /
我的经验:在远程桌面中使用 -s 选项(关闭)(如 OP 所述)只会终止远程桌面,但不会影响远程机器。
我对远程机器使用“-r”。所以它会重新启动,不需要人工干预。
如果您在远程计算机上,您可能还需要添加 -f 选项以强制重新启动。否则您的会话可能会关闭,并且顽固的应用程序可能会挂起系统。强制立即重新启动:shutdown -t 0 -r -f。要获得更友好的“给他们一些时间”选项,您可以使用:shutdown -t 30 -r-f 隐含在超时中。 (来自 Mateusz Konieczny 建议的修改)
J
JosephStyons

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

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

shutdown -t 0 -r -f

要获得更友好的“给他们一些时间”选项,您可以使用以下命令:

shutdown -t 30 -r

正如您在评论中看到的那样,超时暗示了 -f 。

Brutus 2006 is a utility that provides a GUI for these options.


阅读 Windows 8.1 上的关机帮助我看到:“如果超时时间大于 0,则隐含 /f 参数。”由于默认超时为 30 秒,我认为最好给一些时间进行干净关机,然后在超时后强制关机。
那是个很好的观点。我相信当我写这篇文章时,我使用的操作系统是 Windows XP。我看到 Windows 7 中也有“/ f 是隐含的”注释。我已经相应地修改了这个例子。
默认情况下,它们有 30 秒。我立即使用:shutdown /r /t 0 和友好:shutdown /r
K
Kip

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

shutdown -r -f -m \\machinename

还:

-r 参数会导致重新启动(这通常是您在远程机器上想要的,因为物理启动它可能很困难)。

-f 参数选项强制重新启动。

当然,您必须具有适当的权限才能关闭远程机器。


机器名可以是IP地址吗?即,你能通过互联网做到这一点吗?
如果您可以通过 \\IP.AD.DR.ESS 访问机器(即打开了必要的端口并且您拥有所需的权限),那么是的,这应该可以在 Internet 上运行。
我第一次尝试只使用 -r 但它不起作用,因为我想要远程关机。它与关闭 -r -m 一起使用。 -f 不是必需的。
V
VonC

原始答案: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 - 注销

- 关机

- 重新启动

- 力

- 关机

(可以组合 -> 6 = 2+4 FORCE REBOOT

2015 年 4 月更新(6 年后):

1800 INFORMATION 请指出in the comments

不要为此目的使用 rundll32.exe。它期望您在命令行上传递的函数具有非常具体的方法签名 - 它与 ExitWindows 的方法签名不匹配。

Raymond CHEN 写道:

在 2004 年“不匹配调用约定时会出现什么问题?”:

rundll32.exe 调用的函数所需的函数签名为:

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

这并没有阻止人们使用 rundll32 调用并非设计为由 rundll32 调用的随机函数,例如 user32 LockWorkStation 或 user32 ExitWindowsEx。

(哎呀)

ExitWindowsEx 的实际函数签名是:

BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);

2011 年:“在人行道上扔垃圾:rundll32 程序的悲惨历史”

并使其一目了然:

在 2013 年“什么时候使用 rundll32 的指导是什么?简单:不要使用它”:

Rundll32 是 Windows 95 的遗留物,至少从 Windows Vista 开始就已被弃用,因为它违反了许多现代工程准则。


关机和关机有什么区别?
今天@Asdfg?没有任何。 NT4及之前的主板并不总是支持关机,只支持关机(windows完全关闭,但PC仍处于通电状态)。只有关机(如果硬件当时支持它)关闭窗户并切断电源。今天,关机和关机都可以做到这一点。
不要为此目的使用 rundll32.exe。它期望您在命令行上传递的函数具有非常具体的方法签名 - 它与 ExitWindows 的方法签名不匹配。
@1800INFORMATION 非常好。我已经重写了答案,以明确这不是一个有效的选择。
不过,公平地说,如果您立即关闭 PC,您会导致哪种类型的内存泄漏或堆栈损坏并不重要。
G
Gavin

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

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

此外,由于它是在计时器上的,因此您会获得与 hunting in The Oregon Trail 时相同的快感。


您可以在浴文件中放置暂停,然后中止命令,这样中止序列将是任何键
@rsk82,能够逃脱键入任何内容也是我的俄勒冈小道 TRS-80 副本的一个不幸限制,但坦率地说,我一直认为它是作弊,每当我这样做时,我的兄弟都会生气。只是说:你为什么要激怒我的兄弟?
P
Peter Mortensen

当远程进入一台机器时(目标是 Windows XP;我不确定目标是 Windows Vista),虽然开始菜单上的 Shutdown 被 Disconnect Session 或类似的东西取代,但应该有一个名为“Windows Security”的也可以与欧文指出的 Ctrl + Alt + End 相同。


我曾经使用该方法,但它不再起作用,命令行它是。
我还有一个小工具,它具有在 RDP 中工作的关机、重启、休眠、锁定按钮。
X
Xantium

您可能已经意识到这一点,但以防万一:在“运行”框中输入 shutdown -r(或您喜欢的任何命令)并按 Enter 会更容易。

保存到处都是批处理文件。


是的...我只是喜欢双击坐在那里...这也是-r bat文件的用途;o)
小心不要把它放在程序->启动中:)
aw.. 如果将代码放在 shutdown.bat 文件中,则会出现奇怪的行为。试试看! :)....
P
Peter Mortensen

对于基本的注销命令,我会在 NotepadWordPad 中编写:

@echo off
shutdown -l

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


m
msoft

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

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

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


@Keng,阅读实际问题“我无法在开始菜单中使用关机/重启功能”,在我看来,您想知道如何做到这一点。命令行是一种解决方案,键盘是另一种解决方案。它可能会帮助其他偶然发现这个问题并且只是想要一个简单的解决方案来关闭或重新启动的用户。
n
npocmaka

shutdownrundll32.exe shell32.dll,SHExitWindowsEx n 命令的一些补充。

LOGOFF - 允许您通过 sessionid 或会话名称注销用户

PSShutdown - 需要从 Windows sysinternals 下载。

bootim.exe - Windows 10/8 关机 iu

change/chglogon - 阻止新用户登录或进行另一个会话

NET SESSION /DELETE - 结束用户会话

wusa /forcerestart /quiet——windows更新管理器也可以重启机器

tsdiscon - 断开您的连接

rdpinit - 将您注销,但目前我找不到任何文档