这是我之前提问的后续行动(link)。
为了测试,我制作了这个简单的批处理文件,以确保Task Scheduler正确执行批处理文件:
cd "C:\Users\user\Desktop"
echo. 2>test.txt
因此,在桌面上创建test.txt
文档后,批处理文件应该结束,但它会继续运行:
是否可以在批处理文件的末尾或任务属性中的设置中确保cmd进程退出?
谢谢!
答案 0 :(得分:22)
我遇到了完全相同的问题。但是,当我读到Trevor778在这篇文章中所写的内容时,我感到被骗了:
我遇到了同样的问题 - 任务有效但状态仍然显示正在运行。一个简单的尝试是点击左栏中的任务计划程序库。单击“操作/刷新”。普雷斯托。状态已更改为“就绪”这就是我的全部,任务运行正常,只是状态没有更新。希望这会有所帮助。
答案 1 :(得分:10)
您可以将“退出”添加到脚本的最后一行
cd "C:\Users\user\Desktop"
echo. 2>test.txt
exit
答案 2 :(得分:4)
运行TASKKILL /F /IM cmd.exe
将终止所有cmd.exe进程,无论它是否是生成此批处理文件的进程。这可能不是理想的行为。 : - )
根据您的上一个问题判断,我猜您仍在使用cmd.exe /k
执行任务,这将使该窗口无限期地保持打开状态。对于无人值守的任务,cmd.exe /c
是更好的选择。批处理文件完成后,该过程应该结束。
答案 3 :(得分:4)
在Windows 7上也一样。 将所有批处理文件放在用户特定于运行任务的用户路径的目录中
运行programm =" cmd.exe " (没有路径)
你的演员,我的地方=" / c" C:\ Users [username] \ whatever \ your_batchfile.bat" >> log.txt" "
"的>> log.txt "这样我就可以看到批次的输出......
从=&#34开始; C:\ Users [username] \ whatever "
我还检查过"以最高权限运行"框
之后一切正常:)
答案 4 :(得分:0)
使用以下内容
exit /B
您可能会在Windows控制台区域中找到更多信息,然后输入:exit/?
答案 5 :(得分:-1)
我找到的解决方案是在批处理文件的最后添加这一行:
TASKKILL /F /IM cmd.exe
现在,批处理文件任务运行并完成后,它不再处于“所有正在运行的任务”列表中,状态将返回“就绪”而不是保持“正在运行”。
该命令将终止所有正在运行的命令处理器实例,因此可能有害!