当前位置: 首页 > 知识库问答 >
问题:

Windows任务计划程序不允许python子进程。popen

西门靖琪
2023-03-14

前几天我注意到一个相当有趣的问题。

我在Windows服务器2008 RT上有一个Windows计划任务。此任务运行一个运行我构建的python脚本的批处理文件。在这个python脚本中有一个subprocess.Popen调用来运行其他几个批处理文件。但是在过去的几天里,我注意到该任务已成功运行,但辅助批处理文件没有。我知道python脚本成功运行是因为它创建的日志和它制作的辅助批处理文件使用的所有文件都在那里。但是完成的文件不是。

如果我只是自己运行批处理文件,一切都可以完美运行。Microsoft的任务调度程序是否不允许程序打开其他批处理文件,是否有解决方法?

共有2个答案

南宫书
2023-03-14

同样的情况:taks -

我通过在subprocess.Popen中提供脚本/exe的绝对路径解决了这个问题。

我验证了Python进程中可用的环境变量,并且script/exe位于PATH的目录中。尽管如此,Windows还是会给出FileNotFoundError,除非我提供绝对路径。

奇怪的是,从批处理脚本调用相同的脚本/exe是可能的,而不提供其绝对路径。

潘胤
2023-03-14

当任务调度程序尝试调用运行python脚本的. bat时,我遇到了完全相同的问题。

我发现诀窍是将bat文件的路径放在Start in(可选)中

感谢Jordan8307 https://community.spiceworks.com/topic/531774-task-scheduler-fails-executing-bat-file-but-i-can-run-it-manually 的回答

 类似资料:
  • 我有一些可执行文件要安排在Windows任务调度程序中运行。他们的输出必须在某处看到。通过Windows任务计划程序运行应用程序时,程序的输出将丢失。如何捕获此输出?我做了谷歌搜索,找到了破解方法,改为运行cmd并将输出重定向到日志文件,但我无法将这些信息很好地保存在XML文件中,我应该能够在任务调度程序中注册,因此我需要一种更好的方法。 任何帮助都将不胜感激。

  • 我在我的Windows 2008 R2服务器上使用任务计划程序创建了一个任务。它会打开一个. bat文件。这个bat没有错误,工作正常。如果我开始任务(即单击运行),它会执行bat文件。从现在开始,它应该每隔x分钟重复一次(目前设置为1分钟),但它没有。我尝试了很多,几乎改变了每个属性,但它仍然不会重复执行我的bat文件。 我已经阅读了不同的问题和答案,但没有任何效果。 有人知道我做错了什么吗?

  • 我有一个批处理文件,其中包含以下代码以停止和启动SQL报告服务: 我已经设置了每天运行的计划任务,它目前以SYSTEM的形式运行,并设置了最高权限。我在操作上设置了文件夹中的开始选项,通常一切似乎都设置正确。但是当我运行任务时,似乎什么都没有发生,它说任务已经运行,但我看不到服务已经按预期重新启动。 有人能告诉我我错过了什么吗?

  • 我试图让一个任务在Windows调度程序运行每10分钟。 下图中有两条蓝线,这只是一个任务,但我在刷新页面后的不同时间截图了它们。 正如您可以在图像任务调度器中看到的,在最后运行时间下的底部蓝线上显示为下午3:37,下一个运行时间为下午5:02。然后在顶部蓝线上,我在下午5:02之后有一个相同任务的屏幕截图,它没有更新上一次运行时间,但它将下一次运行时间向前推了10分钟。 如果我右键单击任务并手动

  • 我以前有许多 C .exe程序(使用 C Builder XE7 开发)作为计划任务在 Windows 2008 R2 数据中心服务器中运行。这些任务由SYSTEM帐户运行,我以前从未遇到过任何问题。 我最近将这些任务导入到新的Windows 2019数据中心服务器,并在任务计划程序中设置这些任务。使用相同的系统帐户运行任务,但是使用更新的Windows服务器,这些任务现在给我的运行结果是0xC0

  • 我正在建立一个特定的任务。 我需要跟踪程序何时结束,制作报告并分析它。所以,我想为它创建一个时间表。 例如,我有一个名为的进程,我想在它完成作业后检查它的日志。我有文件。我只需要在完成作业并关闭后运行它。 我无法更改程序代码中的任何内容,因此我相信,任务调度程序是唯一的方法。 帮帮我求你了