我使用的是 Windows Server 2003,有一个计划任务无法完成。该任务设置为每天下午 3 点运行 Windows 命令脚本 (.cmd)。该脚本运行一个程序,该程序从 SQL Server 数据库中提取一些数据并将该数据上传到 FTP 服务器。
计划任务文件夹“最后结果”列中显示的错误代码为 0xc000013a。快速谷歌搜索后发现此 Microsoft 支持页面其中指出:最常见的“C”错误代码是“0xC000013A:应用程序因 CTRL+C 而终止”。
任务运行时没有人登录,因此没有人可以按 CTRL+C。我不确定我是否理解 Microsoft 文档中所说的内容。
我检查了基本事项 - 计划任务已启用、计划每天运行,并指向存在于有效位置的文件。有趣的是,当我手动运行此任务时(通过从命令行运行 .cmd 脚本,或右键单击任务并单击“运行”),任务成功完成。
这个错误代码是什么意思?当我不在场强制执行此任务时,如何才能运行它?
答案1
计划脚本故障排除:
如果你还没有,请查看计划任务日志文件,在 GUI 下先进的>查看日志。在文件中搜索“
***
”以查找最新的条目,您可能会看到一些额外的错误信息。定义一个日志文件来捕获输出,并将标准输出和标准错误发送到那里。更改任何回音关闭到回声开启确保您没有隐藏任何错误消息。
例如,如果您的脚本被调用,ftp.data.cmd
那么您的计划任务可能如下所示,cmd /c ftp.data.cmd >> ftp.data.log 2>&1
脚本是否挂起了?也许任务调度程序会在指定的一段时间后终止脚本(因此出现 CTRL+C 错误代码)。在脚本中的战略要点处添加一些这些内容,
echo %DATE% %TIME%
您确定运行该脚本的帐户对脚本中的所有内容都有权限/访问权限吗?
如果你不高兴,运行这个命令并在这里发布输出,也许我们可以从调度开始,
schtasks /query /v /fo LIST /s YOURSERVER
答案2
我无法直接回答这个问题,因为我不知道错误信息的具体含义(也不知道如何修复它),但如果我试图排除故障,我会在脚本的战略点向日志文件中添加一些写入操作,然后在预定的时间之后查看最后运行的检查点是什么。
我怀疑是因为脚本运行时的凭证导致某些操作失败,或者脚本中的某些操作需要登录用户。缩小脚本中失败的位置可能有助于您找到“有问题的”代码。
答案3
我知道这是一篇旧帖子,但它们在寻找解决方案时非常有用,也许我找到的内容也会有所帮助。我使用 Windows Server 2003 上的 WinSCP 上传到 ftp 服务器,并收到相同的错误消息,并且 SchedLgU.txt 文件指出“如果任务需要,则停止任务:”部分中没有足够的时间,尽管我给了任务足够的上传时间。
查看任务管理器,我可以看到 WinSCP.exe 没有被清除,并且列表中有大量进程,因此我创建了一个批处理文件(taskkill /f /im winscp.exe)来终止任何打开的进程,并且我在 WinSCP 之前运行该批处理文件,现在它运行良好。
答案4
与 cori 的回答类似,我建议您检查计划任务设置为以谁的身份运行,因为我看到当运行任务的用户帐户没有与登录用户相同的权限时会发生此错误