【问题标题】:How to send Shutdown command to process through CMD Prompt on Windows如何在 Windows 上通过 CMD 提示发送关机命令进行处理
【发布时间】:2011-07-26 13:41:51
【问题描述】:

我目前是一名软件开发人员,我正在使用大量工具,所以我需要在完成工作后将它们全部关闭。所以我所做的我已经使用 tskill 命令和我使用的程序列表创建了批处理文件,例如

tskill skype
tskill outlook
tskill devenv
tskill explorer
start explorer

这样做有一个问题,当进程被终止时,工具的更改不会保存,例如上一个项目、打开的文件、控件的可视位置和所有其他内容。这些设置只有在您关闭工具时才会保存,但单击它们真的很耗时。

所以我的问题是:我可以向软件发送关闭命令而不是杀死进程吗?

注意: 我需要 CMD 命令,而不是编程解决方案,正如我上面提到的,我需要像“tskill skype”这样的命令来杀死 skype 进程。 Windows 可以发送此命令,因为当您关闭 Windows 时,Windows 正在向所有正在运行的程序发送关闭命令。但如果无法关闭,则 Windows 会像我上面那样杀死进程。

提前致谢。

【问题讨论】:

  • 我认为通过一些像 Autoit 这样的 Windows 自动化脚本语言来做到这一点可能会更好
  • 是的,我也可以开发应用程序来为我做这件事,但事实并非如此,我需要批处理文件,简单的可以复制,并且不难执行...但是感谢您的建议.

标签: windows command-line batch-file shutdown


【解决方案1】:

在 Windows 7 上测试:

taskkill /IM notepad.exe

请注意,您必须指定 .exe 扩展名。我假设这可以满足您的需求:它不仅会终止进程,还会发送“关闭”信号,该信号将显示“保存未保存的更改?”记事本和其他编辑器中的对话框。

【讨论】:

  • 很好,我需要它用于 Windows 7,这是正确的答案。谢谢大佬。
  • 您也可以添加 /F 标志来强制终止进程。
【解决方案2】:

如果您的应用程序支持标准的 Windows 消息,您可以使用 rmtool 欺骗应用程序并告诉它计算机正在关闭。见How to simulate Windows shutdown for debugging?

要编写脚本,您需要先找到进程的 PID(来自 sysinternals 的pslist 提供信息,但您需要解析结果)。

如果他们没有干净地关闭,就像关闭窗口时所做的那样:使用 rmtool 要求他们所有人都很好地退出,然后 30 秒后杀死所有仍然站立的人(对于 Outlook 和 devenv,它甚至可能有点短...)。

【讨论】:

    猜你喜欢
    • 2017-10-21
    • 2014-04-22
    • 1970-01-01
    • 2023-03-16
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2012-07-30
    相关资源
    最近更新 更多