批处理文件手动运行正常,但在任务计划程序中无法运行

4

我有一个批处理文件,它会搜索Java进程并杀死相同的进程。当在命令提示符下运行bat文件时,脚本可以正常工作。但是当我尝试在任务计划程序中执行时,它不起作用。

我已经选择了“无论用户是否登录都运行”的选项。

我的批处理文件如下所示:

for /F "tokens=1*" %%i in ('jps -lv^|C:\Windows\System32\find.exe "TaskTest"') do (C:\Windows\System32\taskkill.exe /F /PID %%i )

我也尝试了此链接中提到的所有方法:Batch runs manually but not in scheduled task

请问还有其他建议吗?

注意:我有另一个批处理文件用于归档文件,它在任务计划程序中使用相同的用户帐户正常运行。


我最近遇到了这个问题,尽管情况非常不同,但我在 SF 上提出了一个问题(http://serverfault.com/q/631995/120335),在那里你会找到很多共同的解决方案。 - MarioDS
我尝试了所有那些建议,但是什么都没用 :( - user1407668
什么失败了?是查找还是终止进程? - Ian
这正是我想要找出的。从命令提示符中一切都运行良好。 - user1407668
3个回答

20

最终我能够找出问题所在。在任务属性的“条件”选项卡下取消勾选“仅在计算机接通交流电时启动”,再结合使用“程序”的其他建议,它开始工作了。

C:\Windows\System32\cmd.exe

并将“添加参数”显示为

/c C:\mypath\myFile.bat

以 '开始时间' 作为

C:\mypath\

当选中“无论用户是否登录”选项并勾选“使用最高权限运行”时,这个方法可以工作。

感谢那些花时间分析此问题的人们 :)


1
谢谢您,我花了很长时间寻找这个解决方案,现在它运行得非常好! - J-Dizzle
很好的建议,但是对我都没有用。唉。 - pianocomposer

0

你为什么在搜索?我们是先做测试,而不是先测试再做。

taskkill /f /im TaskTest&&Echo Task Killed||Echo Task not found

要查看您的问题是什么

taskkill /f /im TaskTest > "%temp%\taskkill.log" 2>&1 &&Echo Task Killed >> "%temp%\taskkill.log" 2>&1|| Echo Task not found >> "%temp%\taskkill.log" 2>&1

并查看taskkill.log文件。

您可能还希望将此作为诊断工具在批处理中执行。将命令行输出回显可能会很有用。

tasklist > "%temp%\taskkill.log" 2>&1 
set > "%temp%\taskkill.log" 2>&1 

0

我相信user1407688已经清晰地回答了这个问题,但是由于我也曾经苦苦寻找解决方案,所以我会贴上一些图片来帮助其他正在寻找解决方案的人更清楚地理解。在我的情况下,“条件”下面的“电源”复选框需要取消选择。单击下面的链接查看图片:

输入图像描述

输入图像描述


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