Windows 7任务调度程序保持返回操作代码2

时间:2012-10-18 22:56:31

标签: windows-7 scheduled-tasks

我设置了一个在我的帐户下运行的计划任务。它运行的所有内容,即使成功,也会返回(2)的操作代码。我在下面的链接中查看了这个错误代码,并声称它无法找到特定文件。

http://www.hiteksoftware.com/knowledge/articles/049.htm

即使我做了非常简单的事情,我也会找回(2)的操作码。例如:

run program: cmd.exe

start in path: c:\windows\system32

我启动任务,我看到进程在我的任务管理器中运行,所以我终止了该任务。然后我检查计划任务的历史记录,它显示为(2)。

对我正在做的事情更加现实:

<?
/* file in c:\php\test.php */
echo "hello";
?>

运行程序:php.exe

从路径开始:c:\php

参数:-f test.php

一切都在命令行中运行,但Windows计划任务会一直返回操作代码(2)。我应该看到(0)的操作代码,这意味着成功,正确吗?

5 个答案:

答案 0 :(得分:21)

您可能没有在“编辑操作”对话框的“开始(可选)框中放置路径。

即使你有一个正在执行的程序的路径,Windows 7仍然希望你告诉它在哪里运行该程序。

答案 1 :(得分:1)

我一直有类似的问题,发现除了接受的答案及其评论中的建议外,我还要做另外一件事。我不得不重新创建任务并设置&#34;配置&#34; Windows Server 2003,Windows XP或Windows 2000 我不明白为什么,因为它不适用于任何操作系统&#39;但在我这样做之后,我的任务确实奏效了。

如果这样运行并且有效,但仍然会收到错误代码,请尝试在脚本末尾输入exit 0

我花了很多时间用谷歌搜索,所以希望这对某人有帮助。

答案 2 :(得分:0)

我一直在删除,直到我删除并重新创建了计划任务...现在可以正常工作了。不知道为什么,但是确实如此。

答案 3 :(得分:0)

问题和最高答案将“返回代码”的概念弄混了,该代码在任务计划程序中显示为“上次运行结果”,并在历史记录中显示为“ OpCode” /“操作代码”一个任务。

如果我创建一个仅做sys.exit(7)的简单Python程序,并通过任务计划程序运行它,那么我得到的上次运行结果为0x7,操作码为2。如果我什么都不做,或sys.exit(0),我得到的上次运行结果为“操作成功完成(0x0)”,仍然是2的操作码。换句话说,已执行程序的返回代码确定了上次运行结果。 OpCode似乎是一个常数2。这还可以确定Opcode 2与返回码2不相关,这可能意味着找不到文件。我们知道该文件是在执行时发现的,并根据所包含的代码返回了不同的“上次运行结果”。

此外,Windows forum post指出此历史记录视图确实来自事件日志。当然,我可以在事件日志中找到相同的事件(总是值为2)。这意味着OpCode的定义将与用于事件的定义相同,并且比Windows事件概念少一个任务调度程序概念。

什么是事件的操作码?我一直在努力寻找一个明确的答案,但是据我所知,它似乎最终是由写入事件日志的程序控制的。 documentation左右可用于在程序中定义操作码。在这种情况下,写入事件日志的内容将是Task Scheduler本身或Windows中的其他内容。

最后的观察:如果我转到事件查看器并查找Log: Microsoft-Windows-TaskScheduler/OperationalSource: Microsoft-Windows-TaskSchedulerEvent ID: 102,201,添加“操作代码”列,然后进行排序,我看到它是< em> always a2。事件100和200总是 a1。这不仅适用于我的手动实验,还包括使用计划任务的所有其他随机程序,例如据我所知,Dropbox和Google更新程序都可以正常工作。

将所有这些放在一起,我强烈打赌,启动计划任务时生成的事件将由Windows硬编码,以在写入事件日志时使用操作码1,并且在完成任务时生成事件(成功或失败)。 Windows-在写入事件日志时使用2的操作码对Windows进行硬编码,而不是-在“上次运行结果”中使用。此操作码似乎是一条红色的鲱鱼,不会影响我们除好奇心之外所需担心的任何事情。

答案 4 :(得分:-1)

好的,我知道我在这里参加派对很晚,但我认为很多问题源于将操作代码返回代码混淆。我不是Windows编程或内部的专家(我使用Windows系统来编程,但我的编程不适用于Windows系统)。

如果我理解正确: 操作代码是由程序员决定设置的任何值运行的例程设置的。 返回代码表示成功或失败。

从我的一个计划任务的历史记录中考虑以下(已编辑)示例: 事件201,任务类别“已完成操作”显示(2)的操作代码。 在“常规”选项卡下方的下方是消息:

任务计划程序成功完成任务“\ My_task”,实例“{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}”,操作“C:..... \ blahblah.exe”,返回码为0。

有成功的迹象。不同的返回码表示失败。 (2)的操作代码仅表示在报告时例程已完成(在本例中)。我不认为有任何设定值要解释为操作代码