批处理文件手动运行但不在任务计划程序中运行

时间:2014-10-17 07:27:08

标签: java batch-file command-prompt pid

我有一个批处理文件,它将搜索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

请提出其他建议。

注意:我有另一个批处理文件来存档文件,这些文件在具有相同用户帐户的任务计划程序中正常运行

2 个答案:

答案 0 :(得分:6)

最后我能够找出问题所在。 当我取消选中任务属性中“条件”选项卡下的“仅在计算机处于交流电源时启动”选项时,以及使用“程序”作为

的其他建议时,它可以工作
C:\Windows\System32\cmd.exe

和'添加参数'为

/c C:\mypath\myFile.bat

和'开始'为

C:\mypath\

当选中“运行是否登录用户”选项并选中“以最高权限运行”选项时,此功能正常工作。

感谢所有花时间分析这一点的人:)

答案 1 :(得分: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。

您可能还希望在批处理中将其作为诊断辅助工具。回应你的命令行m,非常有用。

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