我有一个批处理文件,它将搜索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
请提出其他建议。
注意:我有另一个批处理文件来存档文件,这些文件在具有相同用户帐户的任务计划程序中正常运行
答案 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