任务计划程序,如何在Windows中终止已启动的程序

7
在我的工作中,我们设置了一个任务计划程序,定期启动Java程序来读取邮件。 该任务计划被安排每一分钟运行一次,并调用一个批处理文件来启动Java程序。
现在出现的问题是: 每过一个月左右,jave.exe进程无法正常结束,因此当下一分钟尝试运行时,我会收到以下消息:
“任务计划程序无法为用户“NT AUTHORITY\System”启动“\XXX Jobs”任务。附加数据:错误值:2147750687。”
然后,我每分钟都会收到该消息,直到我从任务管理器中终止java.exe。
现在我的问题是,在任务计划程序中有一些选项可以选择。 在设置下面有一个“如果任务已经在运行,则应用以下规则”的选项 如果我选择“停止现有实例”,这会停止java.exe还是只停止任务?还是有更好的方法。
欢迎提供一些建议。

这对我来说听起来像是一个SuperUser问题。 - Norbert Willhelm
3个回答

8
在批处理文件的结尾处结束该任务。
taskkill /im java.exe

java.exe可能是您计划要结束的任何进程。您可以在批处理文件中添加多行taskkill来同时结束多个进程。

taskkill /im java.exe
taskkill /im explorer.exe
taskkill /im svhost.exe

7
"停止现有实例":任务计划程序服务将停止已经运行的任务实例,并运行新的任务实例。 这意味着它将终止调度程序启动的进程,例如你的情况下是 cmd.exe ,因为你告诉我们你的程序是从批处理文件中启动的。 现在,我不熟悉Java,但我猜如果未以服务方式启动,则停止批处理将会杀死被启动的Java进程。 然后,调度程序将再次运行另一个cmd进程并执行你的批处理文件。

我使用这种方法(将延迟25分钟作为实现“番茄工作法”的一种方式),并运行某些内容来锁定计算机时,遇到了延迟任务的问题。我不希望它在已经存在任务的情况下启动另一个任务实例,但无论如何它似乎仍然会运行。 - JoePC

0
更好的解决方案是修复Java卡顿问题。由于进程每一分钟启动一次,因此您的Java程序应该具有自动退出代码,如果完成任务需要超过一分钟,则自动退出。另一种方法是在批处理文件中,您可以在一分钟后杀死进程。使用taskkill /im命令来杀死进程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接